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

您所在的位置:网站首页 halcon计算个数 halcon颜色识别的两种简单方式

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

2023-10-21 08:07| 来源: 网络整理| 查看: 265

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

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, '黄色')

结果:

 

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沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。

 

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

 

 

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

首先通过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)

结果:

xxx



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3