当前位置: 首页 > news >正文

Halcon 入门教程:卡尺工具(Measure)详解与实战应用

文章目录

  • 🚀 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~2
  • Threshold:边缘对比度阈值
  • '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 工具的教学,也欢迎留言交流!

http://www.dtcms.com/a/269529.html

相关文章:

  • 采煤机:技术革新驱动下的全球市场格局与未来趋势
  • 无缝矩阵的音频合成与音频分离功能详解
  • 大数据在UI前端的应用深化:用户偏好的动态调整与个性化推荐
  • Next.js ISR 缓存机制与最佳实践教程
  • 论文略读; AdapterFusion:Non-Destructive Task Composition for Transfer Learning
  • Android中MVI架构详解
  • 875、爱吃香蕉的珂珂
  • 吃透二分法的模板解法(适合所有类似于二分的算法题)
  • 百度斩获大模型中标第一,股价上涨5%
  • 深度剖析:Ceph分布式存储系统架构
  • 实时开发IDE部署指南
  • Tomcat与IIS:核心差异及接口调用实战解析
  • paddlehub环境搭建和测试
  • 【PTA数据结构 | C语言版】在顺序表 list 的第 i 个位置上插入元素 x
  • C语言使用Protobuf进行网络通信
  • HTTP/3.0的连接迁移使用连接ID来标识连接为什么可以做到连接不会中断
  • 【论文阅读】基于 GAN 和深度迁移学习的频谱预测:一种跨带数据增强框架
  • 函数-1-字符串函数
  • Python文件操作(五分钟小白从入门到精通)
  • 微算法科技(NASDAQ MLGO)研究非标准量子预言机,拓展量子计算边界
  • 【QT】-隐式转换 explicit用法
  • linux常用管路命令
  • 【1-快速上手】
  • 部署并运行Spike-Driven-Transformer或QKFormer
  • 香港站群服务器与普通香港服务器对比
  • 算法设计与分析:分治、动态规划与贪心算法的异同与选择
  • 【计算机网络】第三章:数据链路层(下)
  • 89104 PCIe Switch芯片国产替代 - PCIE5.0国产AI服务器高性能扩展,支持海光/龙芯/飞腾等
  • 【零基础学AI】第30讲:生成对抗网络(GAN)实战 - 手写数字生成
  • 从SEO到GEO:优化策略如何应对传统搜索与AI搜索的巨变