Halcon 学习笔记八:颜色识别

  • 一、图像处理需要的知识
  • 二、图像处理的预处理和分割过程
  • 二、颜色识别的方法
  • 三、例子一
  • 四、例子二
  • 五、例子三

一、图像处理需要的知识

1.图像处理基础(rgb(hsv),gray)
2.图像灰度变换(scale_img)
3.图像基础(emphasize)
4.图像几何变换(仿射变换,极坐标变换)
5.图像分割(blob分析、边缘检测、reduce_domain)
6.图像的频域(fft_img)
7.图像形态学
8.图像复原
9.运动图像
10.图像配准(模板匹配)

二、图像处理的预处理和分割过程


二、颜色识别的方法

颜色识别的方法
1.RGB->HSV (缺点:受光照影响严重)
重点分析H分量和S分量
2.分类器识别颜色

三、例子一

打开颜色识别的例子

通过对RGB转成HSV,然后因为要选出黄色,从而去限制色度和饱和度的范围,因此可以用thresh去限制饱和度和色度的范围。最后通过blob分析,获得指定颜色的物体。
完整代码

* color_simple.hdev: segment yellow cable in HSV color space
dev_close_window ()
dev_open_window (0, 0, 640, 480, 'black', WindowHandle)
for i := 1 to 2 by 1* 读取图片read_image (Image, 'cable' + i)* 将RGB图根据通道拆分成三张图decompose3 (Image, Red, Green, Blue)* 将RGB转为HSVtrans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')* 对饱和度阈值处理(限制饱和度范围)threshold (Saturation, HighSaturation, 100, 255)reduce_domain (Hue, HighSaturation, HueHighSaturation)* 对色度阈值处理(限制色度范围)threshold (HueHighSaturation, Yellow, 20, 50)* 计算连通域connection (Yellow, ConnectedRegions)* 选择形状(特征)select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 0)* 开操作closing_circle (SelectedRegions, Yellow, 3.5)* 获得目标reduce_domain (Image, Yellow, ImageReduced)dev_display (HueHighSaturation)dev_display (ImageReduced)stop ()
endfor

四、例子二


这个例子,和例子一 同样的方式,只不过这个对 好几个颜色物体进行了检测,并且输出message
完整代码

* color_fuses.hdev: classify fuses by color
dev_update_window ('off')
* ****
* step: set up fuse properties and hue ranges
* ****
FuseColors := ['Orange','Red','Blue','Yellow','Green']
FuseTypes := [5,10,15,20,30]
* HueRanges: Orange 10-30, Red 0-10...
HueRanges := [10,30,0,10,125,162,30,64,96,128]
Count := 0
dev_close_window ()
dev_open_window (0, 0, 800, 600, 'black', WH)
while (Count <= 4)* ***** step: acquire image* ****read_image (Image, 'color/color_fuses_0' + Count)dev_display (Image)set_tposition (WH, 12, 512)write_string (WH, 'color/color_fuses0' + Count + '.png')* ***** step: extract saturated hues* ****decompose3 (Image, Red, Green, Blue)trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')threshold (Saturation, Saturated, 60, 255)reduce_domain (Hue, Saturated, HueSaturated)for Fuse := 0 to |FuseTypes| - 1 by 1* ***** step: classify specific fuse* ****threshold (HueSaturated, CurrentFuse, HueRanges[Fuse * 2], HueRanges[Fuse * 2 + 1])connection (CurrentFuse, CurrentFuseConn)fill_up (CurrentFuseConn, CurrentFuseFill)select_shape (CurrentFuseFill, CurrentFuseSel, 'area', 'and', 6000, 20000)area_center (CurrentFuseSel, FuseArea, Row1, Column1)dev_set_color ('magenta')for i := 0 to |FuseArea| - 1 by 1set_tposition (WH, Row1[i], Column1[i])write_string (WH, FuseColors[Fuse] + ' ' + FuseTypes[Fuse] + ' Ampere')endforset_tposition (WH, 24 * (Fuse + 1), 12)dev_set_color ('slate blue')write_string (WH, FuseColors[Fuse] + ' Fuses: ' + |FuseArea|)endforstop ()Count := Count + 1
endwhile
dev_update_window ('on')

五、例子三

比如要检测橙色的糖豆

检测的结果

完整代码

dev_close_window ()
read_image (Image, 'C:/Users/xuheding/Desktop/图片/5.png')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
decompose3 (Image, Red, Green, Blue)
trans_from_rgb (Red, Green, Blue, Hue, Saturation, intensity, 'hsv')threshold (Hue, Regions, 4, 31)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 9486.24, 12568.8)
opening_circle (SelectedRegions, RegionOpening, 3.5)dev_set_draw ('margin')
dev_set_line_width (3)
dev_set_color ('magenta')
dev_display (Image)
dev_display(RegionOpening)

Halcon 学习笔记八:颜色识别相关推荐

  1. halcon学习笔记-车牌号识别

    1.读取图像 快捷键:ctrl+r,以这张车牌为例: 2.图像三通道分割 由于图像中颜色区分明显,尤其是车牌号与背景之间的色差较大,用颜色特征进行分割比较合适.通过三通道分割,将RGB图分成三层独立的 ...

  2. Halcon学习笔记(五)几何定位+仿射+车牌识别

    定位 Blob分析 模板匹配 仿射 使用单位矩阵求仿射矩阵 示例:affine_trans_region.hdev 单位矩阵 hom_mat2d_identity (HomMat2DIdentity) ...

  3. opencv学习笔记八--答题卡识别

    opencv学习笔记八--答题卡识别 导入工具包 定义函数 扫描 自适应阈值处理 检测每一个选项的轮廓 对轮廓进行排序以获取序号 打印结果 参考 导入工具包 #导入工具包 import numpy a ...

  4. Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例

    Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例 一.基本概念 基本流程为: 获取图像 对图像进行灰度值标定 (针对相机获取的图像灰度和输入能量之间的非线性关系, ...

  5. Halcon学习笔记:3D_coordinates(3D标定)

    Halcon学习笔记:3D_coordinates(3D标定) 欢迎有兴趣的朋友一起学习,代码理解注释有问题的可以告诉我,一起讨论,共同进步. *初始化程序,dev_close_window() *关 ...

  6. unity学习笔记-text文本识别html富文本(待改进)

    unity学习笔记 text文本识别html富文本(待改进) 需求 逻辑 实现 xlua的安装 配置到unity 使用 改进优化(待改进) text文本识别html富文本(待改进) 需求 项目里需要将 ...

  7. 黑马程序员_java自学学习笔记(八)----网络编程

    黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...

  8. OpenGL学习笔记(八):进一步理解VAO、VBO和SHADER,并使用VAO、VBO和SHADER绘制一个三角形

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7888 ...

  9. Halcon 学习笔记五:几何定位+仿射变换+测量

    Halcon 学习笔记五:几何定位+仿射变换+测量 定位流程 例子一 例子二(药片的定位) 例子三(充电宝定位) 例子四(车牌定位) 其他 定位流程 blob分析 模板匹配 (仿射变换成标准的形状) ...

最新文章

  1. 关于ProGuard的学习了解(从别处转来)
  2. php 字符串表示,php字符串是否包含某字符串
  3. php min命令,php min函数怎么用?
  4. 有没有什么方法快速能找到导致软件崩溃的进程_崩溃!电脑突然黑屏无法启动...
  5. windows多线程--原子操作
  6. android 平板键盘布局,7款Android平板输入法横向评测,安卓平板软件HD/THD下载
  7. 野火指南者开发板移植 lvgl 库
  8. 广告界的拼多多!变衣科技凭什么?
  9. 图像生成论文阅读:GLIDE算法笔记
  10. spring系列——BeanNameGenerator接口(bean名字生成器)
  11. tensorflow2.0教程- Keras 快速入门
  12. ubuntu trash
  13. maven打包忽略注解_java lombok包在maven已经配置,但是注解没用
  14. 【渝粤教育】电大中专电子商务网站建设与维护 (4)作业 题库
  15. 总结软连接与硬连接的区别
  16. 专门做评测APP的网站整理中
  17. 3.17 使用历史纪录艺术画笔工具制作毛绒效果 [原创Ps教程]
  18. 甲骨文的Hyperion获得更好的企业绩效管理,财务规划及业务INTELL
  19. Procast从入门到精通
  20. 天若ocr免费下载v2021.20图片转文字准确率超高的办公利器

热门文章

  1. Android 自定义软键盘实现 数字九宫格
  2. 解决IDEA : Could not autowire. No beans of ‘xxxx‘ type found
  3. java基础题数组_java基础学习——数组笔试题
  4. Fork/Join(分开/联合)
  5. BeanUtils怎么没有populate方法
  6. JavaScript星星连线技巧
  7. Eclipse中没有Servers或Dynamic Web Project的解决方案
  8. linux 内存容量换算,Hi3516A开发--内存换算
  9. 只读ppt如何获得可编辑版本?
  10. 互联网公司那些价值观-阿里巴巴