halcon颜色识别的两种简单方式

颜色识别的两种简单方式:

1、单通道方式:

              原理:通过不同颜色在灰度图中的阈值范围不同来区分颜色(理论上这种方式不推荐,但在一定情况下适用)

材料:

halcon颜色识别的两种简单方式_第1张图片

halcon代码:

dev_close_window ()
dev_open_window (0, 0, 800, 600, 'black', WH)
read_image (Image, 'C:/Users/斌/Desktop/test/颜色筛选测试.png')
rgb1_to_gray (Image, Gray)
*黑色
threshold (Gray, Regions, 0, 10)
*红色
threshold (Gray, Regions1, 20, 100)
*紫色
threshold (Gray, Regions2, 100, 116)
*蓝色
threshold (Gray, Regions3, 120, 139)
*黄色
threshold (Gray, Regions4, 139, 238)

connection (Regions, ConnectedRegions)
connection (Regions1, ConnectedRegions1)
connection (Regions2, ConnectedRegions2)
connection (Regions3, ConnectedRegions3)
connection (Regions4, ConnectedRegions4)

dev_clear_window()
dev_display(Image)
dev_set_color('black')
area_center (ConnectedRegions, Area, Row, Column)
set_tposition (WH, Row[1]-100, Column[1]-50)
write_string (WH, '黑色')
area_center (ConnectedRegions1, Area, Row, Column)
set_tposition (WH, Row[0]-100, Column[0]-50)
write_string (WH, '红色')
area_center (ConnectedRegions2, Area, Row, Column)
set_tposition (WH, Row[0]-100, Column[0]-50)
write_string (WH, '紫色')
area_center (ConnectedRegions3, Area, Row, Column)
set_tposition (WH, Row[1]-100, Column[1]-50)
write_string (WH, '蓝色')
area_center (ConnectedRegions4, Area, Row, Column)
set_tposition (WH, Row[1]-100, Column[1]-50)
write_string (WH, '黄色')

结果:

 

halcon颜色识别的两种简单方式_第2张图片

2、通过HSV模型方式

什么是’HSV‘?

百度百科

色调H

用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;

饱和度S

饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

明度V

明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的。

HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。

 

颜色模型通俗一点来看,先打开电脑自带的画图工具,打开编辑颜色

halcon颜色识别的两种简单方式_第3张图片

 

 

例子:(我这里只把图片中的紫色给选出来)

首先通过decompose3算子将图片解离成三通道图

再通过trans_from_rgb算子将解离成的三通道图片转换成HSV

halcon代码:

**颜色识别
read_image (Image, 'C:/Users/斌/Desktop/test/颜色筛选测试.png')

*转换为三通道图片
decompose3 (Image, Red, Green,Blue)
*将解离好的三通道图片作为传入然后输出hsv色调
*hsv即 色调、饱和度、明度 trans_from_rgb算子输入三个通道颜色,按hsv排序输出色调、饱和度、明度
trans_from_rgb (Red, Green, Blue, H, S, V, 'hsv')
*色调筛选
threshold (H, Region, 170, 220)
reduce_domain (Image, Region, ImageReduced)
*饱和度筛选
threshold (S, Region2, 100, 255)
reduce_domain (ImageReduced, Region2, ImageReduced2)
*亮度筛选
threshold (V, Region3, 50, 250)
reduce_domain (ImageReduced2, Region3, ImageReduced3)
dev_clear_window()
dev_display (ImageReduced3)

结果:

halcon颜色识别的两种简单方式_第4张图片

xxx

你可能感兴趣的:(halcon)