HALCON软件——基本架构,算子参数

一、知识框架

共分为四个模块:走进 HALCON、HDevelop 组件介绍、图像采集、数据结构。本文讲解前两个模块,包含软件认知、开发界面、算子规则、入门实操流程与调试工具。


二、第一部分 走进 HALCON

1.HALCON 基本定位

HALCON 是德国 MVTec 公司开发的工业级机器视觉算法库,是全球机器视觉领域的标准软件之一,采用开放式架构,支持开发者快速搭建图像处理与机器视觉应用。

HDevelop 是 HALCON 自带的交互式集成开发环境,是新手入门、算法原型开发的核心工具:

  • 拥有交互式图形界面,可实时编译、测试视觉算法,直观查看每一步处理结果
  • 支持将调试完成的算法导出为多语言代码
  • 适用于算法开发、技术研究、教学演示等场景

2.主要应用领域

HALCON 广泛应用于各类工业与行业场景:

  • 农业与食品:果品分拣、缺陷检测
  • 汽车与机器人:工件定位、机器人引导
  • 物流与包装:条码识别、包裹分拣
  • 电子与半导体:芯片检测、引脚测量

3.HALCON 软件架构(分层结构)

从上到下分为四层,逻辑清晰、扩展性强:

  1. 应用层:基于 HALCON 开发的各类视觉应用程序

  2. 开发接口层:支持多种开发语言调用

    • HDevelop(自带开发环境)、Python、C、C++、C#、VB.NET
    • 对应不同的语言绑定引擎,如 HDevEngine、HALCON/.NET 等
  3. 核心算法层:HALCON 图像处理核心库,包含所有视觉算子,支持扩展包拓展功能

  4. 硬件接口层:对接底层硬件

    • 图像采集接口:支持 GigE Vision、USB3 Vision、GenICam TL 等主流相机协议
    • I/O 接口:支持 OPC UA 等工业通信协议
  5. 硬件层:相机、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)灰度直方图
  • 作用:直观展示图像的灰度值分布,辅助确定阈值分割的最优参数
  • 使用流程:
    1. 选中灰度图像后打开灰度直方图
    2. 拖动左右两条竖线,分别对应MinGray和MaxGray,图像窗口同步预览分割效果
    3. 点击「插入代码」,自动生成带对应参数的threshold算子,无需手动填写数值
  • 附加功能:支持平滑直方图、调整量子化、查看像素占比统计信息
(2)特征直方图
  • 作用:展示所有连通区域的特征分布(如面积分布),辅助确定形状筛选的范围

  • 使用流程:

    1. 选中连通区域后打开特征直方图,选择目标特征(如面积area)
    2. 拖动边界线筛选特征区间,图像同步高亮符合条件的区域
    3. 点击「插入代码」,自动生成带对应参数的select_shape算子
  • 支持几十种形状特征,是快速调参、筛选目标的核心工具。

  • 如何查看图像的特征:

    第一步:

    第二步:

6.HDevelop 编程的优缺点

维度 说明
优点 完整支持所有 HALCON 算子;数据可视化直观,调试便捷;参数编辑方便;便于技术交流(直接发送 hdev 文件即可复现);适合无编程经验的新手入门
缺点 无法直接生成带交互界面的商用应用程序,不能独立完成完整软件交付

7.工业界推荐开发流程

标准工业视觉项目采用「原型开发 + 集成部署」的模式,兼顾开发效率与落地能力:

  1. 算法开发:在 HDevelop 中完成视觉检测算法的编写、调试、参数优化,验证方案可行性

  2. 界面集成:将调试好的算法导出为 C++/C# 代码,导入 Visual Studio 等开发环境,开发用户界面与业务逻辑

  3. 编译部署:编译生成可执行程序,部署到现场设备运行,底层调用 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)
相关推荐
andrsted1 小时前
练题簿在线免费刷题:让整理过的资料,变成能反复练习的题库
学习·微信小程序·小程序·学习方法·刷题·1024程序员节
Alsn862 小时前
Windows 安装 Ollama 及本地模型部署
学习·1024程序员节
昨日之日20062 小时前
MiniMax-H3 V7(FastH3 Omni):8步生成带声视频,比原版快近10倍。参考图、视频、声音全都能用!
人工智能·计算机视觉·音视频·1024程序员节
再__努力1点3 小时前
RK3576/RV1126B多路视频 AI 开源引擎 CosmoEdge:从模型到交付,轻松搞定!
人工智能·opencv·计算机视觉·架构·课程设计
欣欣之王来了3 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程
知识分享小能手5 小时前
C学习教程,从入门到精通,C语言学生信息管理系统 — 知识点详解(18)
c语言·学习·1024程序员节
破芽5 小时前
learn-claude-code-s05-s11-学习笔记
笔记·学习
pipixia200336 小时前
C++ 面试高频:namespace 的 6 个知识点,从 using 到匿名命名空间
c语言·学习·算法·嵌入式·命名空间·c++面试·匿名命名空间
每天题库6 小时前
汽车维修工等级考试题库 理论实操核心考点一次梳理清
学习·安全·考试·题库·考证
神也畏惧菠萝6 小时前
想要学习Agent应用开发?:2026 AI Agent开发全栈通关路线
学习·langgraph·mcp协议·agent开发·rag架构·prompt高级工程