Halcon 学习笔记八:颜色识别
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 学习笔记八:颜色识别相关推荐
- halcon学习笔记-车牌号识别
1.读取图像 快捷键:ctrl+r,以这张车牌为例: 2.图像三通道分割 由于图像中颜色区分明显,尤其是车牌号与背景之间的色差较大,用颜色特征进行分割比较合适.通过三通道分割,将RGB图分成三层独立的 ...
- Halcon学习笔记(五)几何定位+仿射+车牌识别
定位 Blob分析 模板匹配 仿射 使用单位矩阵求仿射矩阵 示例:affine_trans_region.hdev 单位矩阵 hom_mat2d_identity (HomMat2DIdentity) ...
- opencv学习笔记八--答题卡识别
opencv学习笔记八--答题卡识别 导入工具包 定义函数 扫描 自适应阈值处理 检测每一个选项的轮廓 对轮廓进行排序以获取序号 打印结果 参考 导入工具包 #导入工具包 import numpy a ...
- Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例
Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例 一.基本概念 基本流程为: 获取图像 对图像进行灰度值标定 (针对相机获取的图像灰度和输入能量之间的非线性关系, ...
- Halcon学习笔记:3D_coordinates(3D标定)
Halcon学习笔记:3D_coordinates(3D标定) 欢迎有兴趣的朋友一起学习,代码理解注释有问题的可以告诉我,一起讨论,共同进步. *初始化程序,dev_close_window() *关 ...
- unity学习笔记-text文本识别html富文本(待改进)
unity学习笔记 text文本识别html富文本(待改进) 需求 逻辑 实现 xlua的安装 配置到unity 使用 改进优化(待改进) text文本识别html富文本(待改进) 需求 项目里需要将 ...
- 黑马程序员_java自学学习笔记(八)----网络编程
黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...
- OpenGL学习笔记(八):进一步理解VAO、VBO和SHADER,并使用VAO、VBO和SHADER绘制一个三角形
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7888 ...
- Halcon 学习笔记五:几何定位+仿射变换+测量
Halcon 学习笔记五:几何定位+仿射变换+测量 定位流程 例子一 例子二(药片的定位) 例子三(充电宝定位) 例子四(车牌定位) 其他 定位流程 blob分析 模板匹配 (仿射变换成标准的形状) ...
最新文章
- 关于ProGuard的学习了解(从别处转来)
- php 字符串表示,php字符串是否包含某字符串
- php min命令,php min函数怎么用?
- 有没有什么方法快速能找到导致软件崩溃的进程_崩溃!电脑突然黑屏无法启动...
- windows多线程--原子操作
- android 平板键盘布局,7款Android平板输入法横向评测,安卓平板软件HD/THD下载
- 野火指南者开发板移植 lvgl 库
- 广告界的拼多多!变衣科技凭什么?
- 图像生成论文阅读:GLIDE算法笔记
- spring系列——BeanNameGenerator接口(bean名字生成器)
- tensorflow2.0教程- Keras 快速入门
- ubuntu trash
- maven打包忽略注解_java lombok包在maven已经配置,但是注解没用
- 【渝粤教育】电大中专电子商务网站建设与维护 (4)作业 题库
- 总结软连接与硬连接的区别
- 专门做评测APP的网站整理中
- 3.17 使用历史纪录艺术画笔工具制作毛绒效果 [原创Ps教程]
- 甲骨文的Hyperion获得更好的企业绩效管理,财务规划及业务INTELL
- Procast从入门到精通
- 天若ocr免费下载v2021.20图片转文字准确率超高的办公利器
热门文章
- Android 自定义软键盘实现 数字九宫格
- 解决IDEA : Could not autowire. No beans of ‘xxxx‘ type found
- java基础题数组_java基础学习——数组笔试题
- Fork/Join(分开/联合)
- BeanUtils怎么没有populate方法
- JavaScript星星连线技巧
- Eclipse中没有Servers或Dynamic Web Project的解决方案
- linux 内存容量换算,Hi3516A开发--内存换算
- 只读ppt如何获得可编辑版本?
- 互联网公司那些价值观-阿里巴巴