文章目录🚀 Halcon 入门教程:卡尺工具(Measure)详解与实战应用📘 一、什么是卡尺工具?🧩 二、卡尺工具的工作流程🛠️ 三、关键函数详解1. `gen_measure_rectangle2`2. `measure_pos`3. `close_measure`📷 四、应用案例:测量电池宽度是否合格📋 场景描述:📍 实战步骤:📋 halcon图形化工具:📊 五、参数调节建议🎯 六、典型应用场景🔚 七、总结
🚀 Halcon 入门教程:卡尺工具(Measure)详解与实战应用
在工业视觉检测中,尺寸测量 是非常常见也是非常重要的一类任务,比如:
检测零件的外径是否合格判断孔位的位置是否偏移检查产品宽度是否在公差范围内
Halcon 提供了强大的 卡尺工具(Measure工具) 来帮助我们完成精确测量工作。本文将带你深入理解卡尺工具的使用原理、常见函数,并通过一个完整案例演示如何使用卡尺工具测量零件边缘位置。
📘 一、什么是卡尺工具?
卡尺工具的本质是 沿着一条测量线或测量矩形区域,寻找边缘点并返回亚像素级的边缘坐标。
它主要依赖于以下几个函数:
Halcon函数功能gen_measure_rectangle2创建卡尺模型(测量对象)measure_pos沿卡尺模型查找边缘点close_measure释放卡尺模型资源
🧩 二、卡尺工具的工作流程
以下是使用 Halcon 卡尺工具的标准流程图:
1. 创建图像 → 2. 创建测量区域 → 3. 建立卡尺模型 → 4. 查找边缘 → 5. 获取位置结果 → 6. 可视化与计算
🛠️ 三、关键函数详解
1. gen_measure_rectangle2
作用: 创建一个用于测量的矩形区域(卡尺)
gen_measure_rectangle2(Row, Column, Phi, Length1, Length2, Width, Height, 'bilinear', MeasureHandle)
Row, Column:矩形中心坐标Phi:角度(弧度)Length1, Length2:半宽半高(即测量区域尺寸)Width, Height:图像宽高'bilinear':插值方式(一般选 bilinear)返回 MeasureHandle:卡尺模型句柄
2. measure_pos
**作用:在测量区域中查找边缘点(通常是亮→暗、暗→亮的跳变点)
measure_pos(Image, MeasureHandle, Sigma, Threshold, 'positive', 'first', RowEdge, ColumnEdge, Amplitude, Distance)
Sigma:边缘检测的高斯平滑系数,建议范围 1~2Threshold:边缘对比度阈值'positive' / 'negative' / 'all':检测边缘类型'first' / 'last' / 'all':检测边缘数量返回:亚像素级的 RowEdge, ColumnEdge
3. close_measure
释放测量句柄,避免内存泄露。
close_measure(MeasureHandle)
📷 四、应用案例:测量电池宽度是否合格
📋 场景描述:
某锂电池产品要求外壳宽度在 30 ± 0.2mm,拍摄图像后需要通过视觉系统测量实际宽度。
📍 实战步骤:
* 1. 读取图像
read_image(Image, 'battery.png')* 2. 创建卡尺测量区域
Row := 250
Column := 300
Phi := 0
Length1 := 5 * 垂直方向测量厚度
Length2 := 100 * 水平方向的长度
get_image_size(Image, Width, Height)gen_measure_rectangle2(Row, Column, Phi, Length1, Length2,Width, Height, 'bilinear', MeasureHandle)* 3. 查找边缘点(例如电池左右两边)
Sigma := 1.5
Threshold := 30
measure_pos(Image, MeasureHandle, Sigma, Threshold,'all', 'all', RowEdge, ColumnEdge, Amplitude, Distance)* 4. 计算边缘间距(电池宽度)
* 假设返回两个边缘点
if |ColumnEdge| >= 2Width_Pixel := abs(ColumnEdge[1] - ColumnEdge[0])* 假设像素对应 0.01 mmWidth_mm := Width_Pixel * 0.01disp_message(WindowHandle, 'Battery Width: ' + Width_mm$'.2f' + ' mm', 'window', 10, 10, 'black', 'true')
endif* 5. 清除资源
close_measure(MeasureHandle)
📋 halcon图形化工具:
我们可以看到,在halcon中提供了若干助手,其中就包括了卡尺工具,用于以图形化的形式实现边缘提取: 打开后我们就可以选择感兴趣区域,用于提取边缘,就像之前代码里面运行的那样,而参数就是以下的参数
📊 五、参数调节建议
参数建议值说明Sigma1.0 ~ 2.0越大越平滑,但会降低精度Threshold根据实际边缘对比度调整边缘不清晰时要适当降低Length15~10 像素决定卡尺厚度,避免夹杂杂点
🎯 六、典型应用场景
应用场景示例机械尺寸检测电池宽度、轴径、间距产品位置校准插槽、孔位、焊点中心位置缺陷检测辅助先找边再确定缺陷边界
🔚 七、总结
卡尺工具是 Halcon 中非常实用的一项测量工具,具有:
高精度(亚像素级别)高鲁棒性(通过平滑和阈值控制)易于部署(仅需指定测量区域和参数)
对于工业视觉检测任务中涉及尺寸测量的场景,掌握 Halcon 的卡尺工具将显著提升你的项目开发效率和测量准确性。
如果你是 Halcon 初学者,建议动手尝试本文案例中的代码,调节参数观察效果,相信你很快就能掌握卡尺工具的使用精髓!
📩 有任何问题或希望我继续写其它 Halcon 工具的教学,也欢迎留言交流!