文章目录
- 前言
- 相关视频链接
- 模板匹配
- 介绍
- Halcon平台使用
- 动态区域截取
- 代码优化
- 固定选取位置
- 添加打印信息
- 添加匹配个数
- 个人能力不足
前言
Halcon平台的使用需要学习新的知识,这里专门开个新的专栏用来练习Halcon平台使用。
相关视频链接
WPF/HALCON机器视觉合集
模板匹配
介绍
模板匹配就是相似匹配,找到图片中类似的点
今天使用如下图片
如果Halcon不会使用可以看我上一篇文章
Halcon WPF 开发学习笔记(1):Hello World小程序
Halcon平台使用
图片就用我给的[Q版长颈鹿]就可以了,由于我之前已经写过从零开始Halcon项目调试了,这里就不再详细讲解细节了,主要功能会以注释的形式表明。
动态区域截取
因为我们要模板匹配,首先要先获取模板。Halcon提供了一个算子可以在图片上截取区域
draw_circle (WindowHandle, Row, Column, Radius)
*----启动
*打开窗口
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*加载图片
read_image (Image2, 'D:/workSpace/Halcon/Hello Halcon/wpf_-halcon/Images/2.png')
*----图像预处理
*灰度处理
rgb1_to_gray (Image2, GrayImage)
*----图像截取
*通过算子,运行动态获取圆形参数
draw_circle (WindowHandle, Row, Column, Radius)
*生成一个圆
gen_circle(Circle, Row, Column, Radius)
*将图片,圆放进去,运行算子得到截取范围
*GrayImage:灰度图像
*Circle:截取区域
*ImageReduced:截取结果
reduce_domain (GrayImage, Circle, ImageReduced)
*----生成模板
*--生成截取区域对应模板,scaled_shape:缩放形状匹配
*ImageReduced:匹配图像
*ModelID:模板Id
*其他参数:匹配类型,旋转角度等,不展开说明
create_scaled_shape_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 0.9, 1.1, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*--找到对应图像
*ImageReduced:匹配图像
*ModelID:匹配模板Id
*导出匹配结果:Row1, Column1, Angle, Scale, Score
find_scaled_shape_model (ImageReduced, ModelID, -0.39, 0.78, 0.9, 1.1, 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row1, Column1, Angle, Scale, Score)
*绘制匹配结果
dev_display_shape_matching_results (ModelID, 'red', Row1, Column1, Angle, 1, 1, 0)
代码优化
固定选取位置
为了不每次运行都手动截取,我们可以把截取后的参数改成固定值
添加打印信息
*----生成注释
*--设置字体
set_display_font (WindowHandle, 26, 'mono', 'true', 'false')
*--设置宽度
dev_set_line_width (3)
*--打印msg
disp_message (WindowHandle, 'row['+Row1+']\ncolumn['+Column1+'', 'window', 10, 10, 'black', 'true')
*--添加锚点
disp_cross (WindowHandle, Row1, Column1, 20, 0)
添加匹配个数
个人能力不足
我折腾半天还是只有一只眼睛,我真的是吐了。不懂算子,只能单独去看Halcon的教程了。