【机器视觉】halcon模版创建&识别,代码+操作步骤+演示

发布于:2025-08-06 ⋅ 阅读:(13) ⋅ 点赞:(0)

一、halcon代码(完整)

注:图片要放入指定文件夹(本案例是在D:/pictures中)

*******读取文件夹中所有图片路径**********
*将D:/pictures文件夹下的图片文件路径(png和jpg)全部读取到ImageFiles中
list_image_files ('D:/pictures', ['png','jpg'], [], ImageFiles)

*******选取目标图像展示才窗口上**********
*读取其中一张图片用于创建模版
read_image (Image, ImageFiles[3])
*关闭当前打开的图形窗口(用于清理之前的窗口,避免干扰)
dev_close_window ()
*获取图像大小
get_image_size (Image, Width, Height)
*按图像大小创建一个尺寸一样的窗口,输出变量,窗口的唯一标识WindowID(后续操作该窗口时需要用到)
dev_open_window (0, 0, Width, Height, 'black', WindowID)
*设置图形的绘制模式。只绘制图形的边缘(轮廓),不填充内部(后续绘制矩形时只显示边框)。
dev_set_draw ('margin')
*在当前窗口显示图像
dev_display (Image)

*******绘制感兴趣区域 (ROI) **********
*在窗口中交互式绘制一个旋转矩形(用户用鼠标操作),左键框选范围、右键确认,即绘制感兴趣区域 (ROI) 
draw_rectangle2 (WindowID, Row, Column, Phi, Length1, Length2)
*根据绘制的参数生成矩形区域(非交互式,用于后续计算)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
*裁剪图像,只保留矩形区域内的像素
reduce_domain (Image, Rectangle, ImageReduced)

*******根据ROI区域创建模版**********
*创建形状模版:以裁剪后的图像(ImageReduced)为模板,创建一个用于后续匹配的 “形状模板”(基于图像轮廓和灰度特征)。
create_shape_model(ImageReduced, 5, rad(0), rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', WindowID) 

*******搜索某图像是否有与模版匹配的区域**********
* 搜索匹配 :读取用于搜索的图像(这里复用了图像ImageFiles[3],实际应用中通常是其他图像)
read_image(SearchImage, ImageFiles[3]) 
find_shape_model(SearchImage, WindowID, rad(0), rad(360), 0.7, 0, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score) 

*******显示匹配的区域,轮廓为绿色**********
* 可视化结果 :在窗口中标记出匹配到的区域,直观展示结果。
dev_display_shape_matching_results(WindowID, 'green', Row, Column, Angle, 1, 1, 0)

 二、运行展示

1、启动程序

复制程序到halcon软件中

 

2、查看图像是否加载正常

点开控制变量中的ImageFiles

查看变量监视中是否有所有图片的路径,没有则查看图片路径是否有误,有路径,则找到做模版用的图片序号,我这里是3

3、修改图片索引值

根据上一步得到的序号值修改ImageFiles的索引值

4、点击重置程序运行

每次运行前都要点一下重置,否则会从上一次执行到的地方开始

5、点击运行程序

运行正常的话会弹出一个窗口,窗口中展示的就是你选的图片

 

6、框选矩形ROI区域

用鼠标左键点击图像框选目标位置、点击+号可以移动矩形区域,拖动边缘可缩放矩形范围(这里我框选了一个椭圆形)

7.点击鼠标右键确认,展示查找结果

可以发现图片中所有和模版匹配的区域都被找到了(显示出绿色边缘)

变量这里还可以看到每个匹配到的区域坐标


网站公告

今日签到

点亮在社区的每一天
去签到