Halcon 算子API使用指南

1. HALCON 算子的特点

  • 模块化设计:每个算子独立完成特定功能(如滤波、分割、测量、3D处理等)。
  • 跨平台支持:支持 C++、C#、Python、.NET 等语言,可集成到多种开发环境中。
  • 高性能优化:底层基于高效的图像处理库,适合实时工业应用。

2. 常用算子分类

以下是 HALCON 中常见的算子类别及示例:

图像采集

  • open_framegrabber(): 连接相机或图像采集卡。
  • grab_image(): 抓取单帧图像。
  • close_framegrabber(): 关闭采集设备。

图像预处理

  • read_image(): 读取图像文件。
  • rgb1_to_gray(): 将 RGB 图像转为灰度。
  • gauss_filter(): 高斯滤波去噪。
  • emphasize(): 增强图像对比度。

区域处理(ROI)

  • threshold(): 阈值分割生成区域。
  • connection(): 分离连通区域。
  • select_shape(): 根据形状特征筛选区域。

特征提取

  • edges_sub_pix(): 亚像素级边缘检测。
  • find_shape_model(): 基于形状模板匹配。
  • find_contours(): 提取轮廓。

测量与标定

  • measure_pos(): 测量边缘位置。
  • camera_calibration(): 相机标定。
  • get_calib_data(): 获取标定数据。

3D 视觉

  • read_object_model_3d(): 读取 3D 模型。
  • surface_matching(): 3D 表面匹配。
  • reconstruct_surface(): 从点云重建表面。

深度学习

  • read_dl_model(): 加载深度学习模型。
  • apply_dl_model(): 执行推理。
  • train_dl_model(): 训练模型(需配置环境)。

3. 调用 HALCON 算子的基本流程

在 HDevelop 中调用

1
2
3
4
5
6
7
8
9
10
11
* 读取图像
read_image(Image, 'particle.jpg')

* 阈值分割
threshold(Image, Region, 128, 255)

* 分离连通区域
connection(Region, ConnectedRegions)

* 筛选面积较大的区域
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 100, 1000)

在 C++ 中集成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "HalconCpp.h"
using namespace HalconCpp;

int main() {
HImage image;
image.ReadImage("particle.jpg");

HRegion region;
image.Threshold(&region, 128, 255);

HRegion connectedRegions;
region.Connection(&connectedRegions);

HRegion selectedRegions;
connectedRegions.SelectShape(&selectedRegions, "area", "and", 100, 1000);

return 0;
}

4. 关键资源

  • 官方文档:访问 MVTec 官网 下载文档,包含完整的算子列表和示例。
  • HDevelop 环境:HALCON 自带的集成开发环境,支持直接调试算子。
  • 示例程序:安装目录下的 examples 文件夹提供多种应用场景的代码。

5. 常见问题

  • 版本兼容性:不同 HALCON 版本的 API 可能有差异,需确认版本号。
  • 内存管理:及时释放 HImageHRegion 等对象避免内存泄漏。
  • 错误代码:通过 try/catch 捕获异常(如 HOperatorException)。

6. 扩展支持

  • 多语言接口:通过 HALCON/.NET、HALCON/Python 等接口与其他语言交互。
  • 硬件加速:利用 GPU 加速算子(如 set_system('use_gpu', 'true'))。