1. HALCON开发环境搭建
HALCON 是 MVTec 公司推出的机器视觉算法库,其开发环境由三部分构成:底层算法库(HALCON Library)、交互式集成开发环境 HDevelop,以及连接二者的许可证与运行时机制。理解这三者的关系,是后续所有开发工作的前提。本章从安装、许可、界面到第一个可运行程序,走通一条完整的入门路径。
一、安装与目录结构
HALCON 的安装包通常命名为 halcon-XX.XX.XX-windows.exe(Windows)或 .tar.gz(Linux),其中 XX.XX.XX 为版本号,例如 24.11。安装过程中需要关注三个关键选择:
- 安装路径:默认
C:\Program Files\MVTec\HALCON-24.11-Progress。路径中不要包含中文或空格,否则部分编译工具链可能报错。 - 组件选择:至少勾选 HALCON Core、HDevelop、Image Acquisition Interfaces(图像采集接口)与 Programming Interfaces(C++/C#/Python 等语言接口)。
- 环境变量:安装程序会自动写入
HALCONROOT、HALCONARCH、PATH。若手动部署,需自行设置,例如HALCONROOT=C:\Program Files\MVTec\HALCON-24.11-Progress,HALCONARCH=x64-win64。
安装完成后,目录中几个子文件夹值得记住:bin\x64-win64 存放可执行文件与动态库;include 与 lib 供 C++ 开发引用;examples 内含大量按主题分类的示例程序,是学习算子用法最直接的资源;help 为离线文档。验证安装是否成功,可在命令行执行 hdevelop -version,若返回版本号即表示环境变量生效。
二、许可证管理
HALCON 的许可证分为两类:开发许可证(Development License)用于 HDevelop 与编译调试,运行许可证(Runtime License)用于部署后的应用程序。二者都通过加密狗(USB Dongle)或软授权(License File)提供。常见形式包括:
| 许可类型 | 载体 | 典型用途 |
|---|---|---|
| 开发许可 | USB 加密狗 / 软授权文件 | HDevelop 编程、调试 |
| 运行许可 | 加密狗 / 授权文件 | 部署到客户机运行 |
| 试用许可 | 软授权(限时) | 评估与学习 |
授权文件通常为 .dat 或 .lic,需放置到 %HALCONROOT%\license 目录,或通过环境变量 HALCON_LICENSE_FILE 指定路径。若使用加密狗,需安装驱动 HASP 并确认系统识别到设备。在 HDevelop 中可通过菜单 Help → License Info 查看当前授权状态、到期时间与可用模块。若提示 “No license found”,优先检查:授权文件路径是否正确、加密狗是否被识别、系统时间是否被篡改。
三、HDevelop 界面导航
HDevelop 采用多窗口布局,核心区域包括:
- 程序窗口(Program Window):编写与编辑 HALCON 程序的主区域,支持语法高亮、自动补全与断点。
- 变量窗口(Variable Window):显示当前程序运行后所有变量的名称、类型与值,图像变量以缩略图呈现。
- 图形窗口(Graphics Window):显示图像、区域、轮廓、XLD 等可视化结果,支持缩放、平移与颜色调整。
- 算子窗口(Operator Window):按类别浏览全部算子,双击即可插入到程序中,并自动生成参数占位符。
- 程序执行工具栏:包含“运行”“单步执行”“执行到光标”“停止”等按钮,是调试的核心入口。
建议初学者先熟悉三个快捷键:F5 运行整个程序,F6 单步执行,F9 在光标处设置断点。配合变量窗口观察每一步的中间结果,是理解算子行为最有效的方式。
四、第一个图像处理程序
下面这段程序完成一个典型任务:读取一张工业零件图像,提取其中的目标区域,并输出每个区域的面积与中心坐标。在 HDevelop 中新建程序,输入以下代码:
read_image (Image, 'particle')
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Regions, 128, 255)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 500, 99999)
area_center (SelectedRegions, Area, Row, Column)
dev_display (Image)
dev_set_color ('red')
dev_display (SelectedRegions)
逐行理解:read_image 从 HALCON 自带图像库读取名为 particle 的示例图;rgb1_to_gray 将三通道彩色图转为单通道灰度图,便于后续阈值处理;threshold 以 128 为下限、255 为上限做灰度分割,得到候选区域;connection 把可能连在一起的区域拆分为独立连通域;select_shape 按面积特征筛选,保留面积在 500 到 99999 像素之间的区域;area_center 计算每个保留区域的面积与中心行列坐标,结果分别存入 Area、Row、Column 三个数组。
运行后,图形窗口会显示原图,并用红色叠加显示筛选出的区域。此时切换到变量窗口,可以看到 SelectedRegions 的类型为 region 数组,Area 为整数数组,Row 与 Column 为浮点数组。若 SelectedRegions 为空,说明阈值区间或面积范围设置不合理,可先调低面积下限,或使用 灰度直方图 工具观察图像灰度分布后再确定阈值。