halcon计量模型学习3 单计量模型测量两圆间距离(轮廓拟合效果较好)

这篇博客介绍了如何利用计量模型在图像处理中测量两个圆之间的距离。首先创建计量模型,然后设置图像大小,接着在窗口上绘制圆并添加到模型中。通过应用模型进行测量,获取圆的轮廓并计算圆心间的距离。最后,在窗口中显示测量结果和距离值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计量模型的优点就是拟合效果好、稳定,圆的数据获得输入与上篇线段间距离有一点差别,但大体相同,实验时仍为第一篇的图片

dev_update_off ()
*Im1  Image1  Image2
read_image (Image,'C:/Users/连山人/Desktop/标定板图片/Image1.bmp')
dev_close_window ()
get_image_size (Image,Width, Height)
dev_open_window_fit_image (Image, 0, 0, Width, Height, WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_color ('lime green')
dev_set_line_width (3)
dev_display (Image) 

*------------------步骤----------------------
*创建计量模型需要的数据结构:MetroLineModel;创建的用于测量的数据结构
create_metrology_model (MetroLineModel1)
* 设置计量对象的图像大小(不是必须的,但可以提高第一次测量的运行时间)
set_metrology_model_image_size (MetroLineModel1, Width, Height)
**------------------步骤----------------------
draw_circle(WindowHandle,RowC1, ColumnC1, Radius1)
draw_circle(WindowHandle,RowC2, ColumnC2, Radius2)
* 添加几个完整的圆圈
CircleParam := [RowC1, ColumnC1, Radius1]
CircleParam := [CircleParam,RowC2, ColumnC2, Radius2]
add_metrology_object_generic (MetroLineModel1, 'circle', CircleParam, 10, 5, 1, 30, [], [], CircleIndices1)
apply_metrology_model (Image, MetroLineModel1)

* 得到一个可视化的测量几何形式
    get_metrology_object_result_contour (ContoursfitCir, MetroLineModel1, 'all', 'all', 1.5)
    * 提取小圆的半径
    get_metrology_object_result (MetroLineModel1, CircleIndices1, 'all', 'result_type', 'all_param', paramAll)

distance_pp( paramAll[0], paramAll[1], paramAll[3], paramAll[4] ,Distancepp)

dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, 640, 640, WindowHandle)
disp_obj (Image, WindowHandle)
dev_display (ContoursfitCir)
Message0 := '圆间距离'+Distancepp
disp_message (WindowHandle,  Message0, 'window', -1, -1, 'red', 'true')

stop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值