Halcon模板匹配+对齐模板+测量边(例子)

1加载图像

cs 复制代码
dev_update_off()
read_image(Image, '图片路径')
get_image_size(Image, Width, Height)
dev_get_window(WindowHandle)
dev_get_draw('margin')
dev_set_color('green')
dev_display(Image)
stop()

2绘制感兴趣区域

cs 复制代码
*左边的线
draw_line(WindowHandle, Row1, Column1, Row2, Column2) 
gen_region_line(RegionLines, Row1, Column1, Row2, Column2)
dev_display(RegionLines)
*右边的线
draw_line(WindowHandle, Row11, Column11, Row21, Column21)
gen_region_line(RegionLines1, Row11, Column11, Row21, Column21)
dev_display(RegionLines1)

*绘制模板匹配区域
draw_rectangle2(WindowHandle, Row, Column, Phi, Length1, Length2)
gen_rectangle2(Rectangle, Row, Column, Phi, Length1, Length2)
reduce_domain(Image, Rectangle, ImageReduced)

3制作匹配模板

cs 复制代码
*制作模板
create_shape_model(ImageReduced, 'auto', rad(0), rad(360), 'auto', 'auto', 'use_polarity', 'auto', ModelID)

*找模板匹配结果
find_shape_model(Image, ModelID, rad(0), rad(360), 0.5, 1, 0.5, 'least_squares',0 , 0.9, Row3, Column3, Angle, Score)

4创建找线工具

cs 复制代码
*1创建测量句柄
create_metrology_model(MetrologyHandle)
*2设置图像大小
set_metrology_model_image_size(Metrology, Width, Height)
*3添加测量形状
add_metrology_object_generic(MetrologyHandle, 'line', [[Row1, Column1, Row2, Column2],[Row11, Column11, Row21, Column21]], 20, 5, 1, 5, [], [], Index)
*使用测量模型
apply_metrology_model(Image, MetrologyHandle)
*获取卡尺轮廓
get_metrology_object_measure(Contour, MetrologyHandle, 'all', 'all', Row4, Column4)
*获取一个实际测量的边
get_metrology_object_result_contour(Contour, MetrologyHandle, 'all', 'all', 1.5)
*绑定坐标系
*reference_system 参考系统
*[Row3,Column3,0]第一张模板匹配的坐标和角度
set_metrology_model_param(MetrologyHandle, 'reference_system', [Row3,Column3,0])
'reference_system':GenParamValue 中给出的元组应包含 [row, column, angle]。默认情况下,参考系统是图像坐标系,其原点在左上角。通过其平移(row, column)和旋转角度(angle)相对于图像坐标系定义新的参考系统。
*显示
dev_display(Image)
*匹配的图
dev_display_shape_matching_results(ModeID, 'green', Row3, Column3, Angle, 1, 1, 0)
*卡尺轮廓
dev_display(Contours)
*实际找到的边
dev_display(Contour)

5添加测量图

cs 复制代码
list_files ('D:/1w+/Halcon/05/dip_switch', 'files', Files)
for i := 0 to |Files| -1 by 1
    read_image(Image, Files[i])
    dev_image(Image1)
    *查找新图的匹配结果
     find_shape_model(Image1, ModelID, rad(0), rad(360), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row3, Column5, Angle1, Score1)
    
     *对齐模板 其实是vp的Fixture工具---align_metrology_model 函数功能(用于对已创建的2D计量模型执行刚性对齐变换(先旋转、后平移))
    align_metrology_model(MetrologyHandle, Row5, Column5, Angle1)
    *使用测量模型
    apply_metrology_model(Image1, MetrologyHandle)
    
    *测量距离
    *Parameter 第一条线的起点坐标与终点坐标
    get_metrology_object_result(MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)
    *制作左边线
    gen_region_line (RegionLines1, Parameter[0], Parameter[1], Parameter[2], Parameter[3])
    
    *Parameter1 第二条线的起点坐标与结束点坐标
    get_metrology_object_result (MetrologyHandle, 1, 'all', 'result_type', 'all_param', Parameter1)
    *制作右边线
    gen_region_line (RegionLines2, Parameter1[0], Parameter1[1], Parameter1[2], Parameter1[3])
    *测量两个局域之间的最小距离
    distance_rr_min (RegionLines1, RegionLines2, MinDistance, Row12, Column12, Row22, Column22)
    *画一个水平线
    gen_region_line (RegionLines3, Parameter[0]+20, Parameter[1], Parameter1[0]+20, Parameter1[1])
    
    *获取卡尺轮廓图
    get_metrology_object_measures (Contours1, MetrologyHandle, 'all', 'all', Row6, Column6)
    *实际找到边
    get_metrology_object_result_contour (Contour1, MetrologyHandle, 'all', 'all', 1.5)
    dev_display (Image1)
    dev_display (Contours1)
    dev_display (Contour1)
    dev_disp_text ('物体的宽度为:'+MinDistance, 'image', (Parameter[0]+20+Parameter1[0]+20)/2, (Parameter[1]+Parameter1[1])/2-50, 'black', [], [])
    stop ()

endfor

相关推荐
youcans_16 小时前
【HALCON 实战入门】4. 图像读取、显示与保存
图像处理·人工智能·计算机视觉·halcon
youcans_20 小时前
【HALCON 实战入门】2. HALCON 快速入门
图像处理·人工智能·计算机视觉·halcon
爱凤的小光14 天前
Halcon之3D位姿-个人学习笔记篇(待完善)
halcon
MyBFuture17 天前
Halcon 金字塔与边缘检测技术解析
人工智能·计算机视觉·halcon
MyBFuture19 天前
Halcon条形码与二维码识别全攻略
开发语言·人工智能·halcon·机器视觉
wuguan_19 天前
Halcon读取条形码和二维码
halcon
code bean19 天前
【Halcon 】用 Halcon 实现涂抹:Region、仿射变换与 WPF 交互
wpf·交互·halcon
MyBFuture22 天前
Halcon模板匹配核心技术解析大全
开发语言·人工智能·计算机视觉·halcon·机器视觉
wuguan_25 天前
Halcon图像处理(灰度值)
图像处理·halcon