一、知识框架
共分为四个模块:走进 HALCON、HDevelop 组件介绍、图像采集、数据结构。本文讲解前两个模块,包含软件认知、开发界面、算子规则、入门实操流程与调试工具。
二、第一部分 走进 HALCON
1.HALCON 基本定位
HALCON 是德国 MVTec 公司开发的工业级机器视觉算法库,是全球机器视觉领域的标准软件之一,采用开放式架构,支持开发者快速搭建图像处理与机器视觉应用。
HDevelop 是 HALCON 自带的交互式集成开发环境,是新手入门、算法原型开发的核心工具:
- 拥有交互式图形界面,可实时编译、测试视觉算法,直观查看每一步处理结果
- 支持将调试完成的算法导出为多语言代码
- 适用于算法开发、技术研究、教学演示等场景
2.主要应用领域
HALCON 广泛应用于各类工业与行业场景:
- 农业与食品:果品分拣、缺陷检测
- 汽车与机器人:工件定位、机器人引导
- 物流与包装:条码识别、包裹分拣
- 电子与半导体:芯片检测、引脚测量
3.HALCON 软件架构(分层结构)

从上到下分为四层,逻辑清晰、扩展性强:
-
应用层:基于 HALCON 开发的各类视觉应用程序
-
开发接口层:支持多种开发语言调用
- HDevelop(自带开发环境)、Python、C、C++、C#、VB.NET
- 对应不同的语言绑定引擎,如 HDevEngine、HALCON/.NET 等
-
核心算法层:HALCON 图像处理核心库,包含所有视觉算子,支持扩展包拓展功能
-
硬件接口层:对接底层硬件
- 图像采集接口:支持 GigE Vision、USB3 Vision、GenICam TL 等主流相机协议
- I/O 接口:支持 OPC UA 等工业通信协议
-
硬件层:相机、3D 相机、采集卡、I/O 设备等实体硬件
4.最佳学习方法:官方例程
HALCON 内置了覆盖全功能的官方例程库,是学习算子用法、项目流程最权威的资料:
-
入口:软件启动页「浏览例程」,或菜单栏中打开

-
例程分类方式:
- 按应用范围:表面检测、定位识别、机器人视觉、3D 视觉、OCR 等
- 按工业领域:半导体、汽车制造、食品医药、物流等
- 按算法类型:Blob 分析、边缘提取、滤波、形态学、模板匹配等
-
每个例程均为可直接运行的完整代码,附带效果演示,适合边跑边学。
三、第二部分 HDevelop 组件介绍
1.HDevelop 核心能力
HDevelop 定位是快速原型化工具,核心擅长完成以下工作:
- 直接连接采集卡和工业相机,实时采集图像
- 从相机、本地文件中加载图像,检查图像数据
- 验证视觉方案的可行性,开发完整的视觉检测流程
- 快速测试不同算子、不同参数的处理效果
- 保存工程文件,支持导出 C++、C#、C、VB.NET等语言的算法代码
2.HDevelop 界面组成
界面由五大核心区域组成,各司其职:

| 窗口名称 | 核心功能 |
|---|---|
| 图像窗口 | 显示原图、处理后的区域、轮廓等所有可视化结果 |
| 程序窗口 | 编写、编辑、调试代码,支持单步执行、断点调试 |
| 变量查看窗口 | 分为图像变量、控制变量两栏,查看所有中间变量的结果与数值 |
| 算子窗口 | 可视化编辑算子参数,无需手动拼写代码,降低入门门槛 |
| 菜单栏 / 工具栏 | 提供文件操作、程序执行、可视化设置、帮助文档等功能入口 |
3.算子(Operator)核心规则
算子是 HALCON 的基础功能单元,有严格统一的语法规则,是入门必须掌握的核心逻辑。
(1)核心原则
- 输入、输出参数严格分离
- 算子不会修改原始输入数据,所有处理结果都会输出到新的变量中,原始数据始终保留
(2)两类参数

| 参数类型 | 英文名称 | 包含内容 |
|---|---|---|
| 图标参数 | Iconic | 图像(image)、区域(region)、轮廓(XLD),是视觉处理的对象 |
| 控制参数 | Control | 整数、实数、字符串、句柄,是算法的配置参数 |
(3)固定参数顺序
所有算子都遵循统一的参数顺序,通用语法格式:
算子名(输入图标 : 输出图标 : 输入控制 : 输出控制)
顺序永远为:输入图标 → 输出图标 → 输入控制 → 输出控制
示例:threshold(Image : Region : MinGray, MaxGray : )
- 输入图标:
Image(待处理的原图) - 输出图标:
Region(分割得到的区域) - 输入控制:
MinGray, MaxGray(灰度上下限) - 无输出控制参数
4.入门核心算子(完整处理流程)
以下算子构成了最基础的 Blob 分析流程,是视觉入门的必学内容:
(1)read_image ------ 读取图像
-
功能:加载多种格式的图像文件
-
语法:
read_image( : Image : FileName : ) -
路径规则:只写文件名(如
'claudia')时,代表图片与程序在同一文件夹;也可填写绝对路径。 -
补充:HALCON 安装目录的
examples/images文件夹中自带大量官方示例图片,可直接调用。
(2)rgb1_to_gray ------ 彩色转灰度
- 功能:将 RGB 彩色图像转换为灰度图像,是绝大多数灰度处理的前置步骤
- 语法:
rgb1_to_gray(RGBImage : GrayImage : : )
(3)threshold ------ 全局阈值分割
- 功能:按照灰度区间提取像素,生成区域,是最基础的图像分割方法
- 语法:
threshold(Image : Region : MinGray, MaxGray : ) - 效果:提取灰度值在
[MinGray, MaxGray]范围内的所有像素,组成一个区域对象
(4)connection ------ 连通域分析
- 功能:将一个整体区域,拆分成多个互相独立、互不连通的子区域
- 语法:
connection(Region : ConnectedRegions : : ) - 作用:阈值分割得到的所有符合条件的像素默认是一个整体;经过连通域拆分后,每个独立目标会成为单独的区域,方便后续计数、筛选、测量。
(5)select_shape ------ 按形状特征筛选区域
- 功能:根据区域的形状特征,筛选出符合条件的区域
- 语法:
select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : ) - 常用特征:
area(面积)、circularity(圆形度)、width/height(宽高)等 Operation:and表示同时满足多个特征条件,or表示满足其一即可
5.可视化调试工具
HDevelop 提供了直方图工具,可直观调试参数,自动生成代码,大幅提升入门效率。
(1)灰度直方图

- 作用:直观展示图像的灰度值分布,辅助确定阈值分割的最优参数
- 使用流程:
- 选中灰度图像后打开灰度直方图
- 拖动左右两条竖线,分别对应
MinGray和MaxGray,图像窗口同步预览分割效果 - 点击「插入代码」,自动生成带对应参数的
threshold算子,无需手动填写数值
- 附加功能:支持平滑直方图、调整量子化、查看像素占比统计信息
(2)特征直方图

-
作用:展示所有连通区域的特征分布(如面积分布),辅助确定形状筛选的范围
-
使用流程:
- 选中连通区域后打开特征直方图,选择目标特征(如面积
area) - 拖动边界线筛选特征区间,图像同步高亮符合条件的区域
- 点击「插入代码」,自动生成带对应参数的
select_shape算子
- 选中连通区域后打开特征直方图,选择目标特征(如面积
-
支持几十种形状特征,是快速调参、筛选目标的核心工具。
-
如何查看图像的特征:
第一步:

第二步:


6.HDevelop 编程的优缺点
| 维度 | 说明 |
|---|---|
| 优点 | 完整支持所有 HALCON 算子;数据可视化直观,调试便捷;参数编辑方便;便于技术交流(直接发送 hdev 文件即可复现);适合无编程经验的新手入门 |
| 缺点 | 无法直接生成带交互界面的商用应用程序,不能独立完成完整软件交付 |
7.工业界推荐开发流程
标准工业视觉项目采用「原型开发 + 集成部署」的模式,兼顾开发效率与落地能力:
-
算法开发:在 HDevelop 中完成视觉检测算法的编写、调试、参数优化,验证方案可行性
-
界面集成:将调试好的算法导出为 C++/C# 代码,导入 Visual Studio 等开发环境,开发用户界面与业务逻辑
-
编译部署:编译生成可执行程序,部署到现场设备运行,底层调用 HALCON 算法库

附:入门完整流程示例代码
* 1. 读取彩色图像
read_image (Image, 'claudia')
* 2. 彩色转灰度
rgb1_to_gray (Image, GrayImage)
* 3. 阈值分割,提取暗部区域
threshold (GrayImage, Regions1, 0, 70)
* 4. 连通域拆分,得到独立区域
connection (Regions1, Connection)
* 5. 按面积筛选,保留指定大小的区域
select_shape (Connection, SelectedRegions1, 'area', 'and', 45656.6, 46614.2)