halcon函数封装
把选中的代码做成函数
Halcon本地程序函数、函数文件及库函数的区别
使用本地图片halcon与vs联合开发
创建winform应用
注意:取消首选32位
添加Halcon引用
点击浏览添加本电脑Halcon库
Halcon安装目录下bin文件夹——dotnet35
- dotnet20文件夹包含兼容.NET Framework 2.0的DLL文件
- dotnet35文件夹包含兼容.NET Framework 3.5的DLL文件
halcondotnet.dll
是 HALCON.NET
开发平台(如 C#、VB.NET)提供的核心接口库halcondotnetxl.dll
是 HALCON 为大图像处理设计的 专用 .NET 接口库hdevenginedotnet.dll
是 HALCON 提供的 脚本引擎接口库,用于在 .NET 平台(如 C#)中动态加载、管理和执行 HALCON 脚本文件(.hdvp
或.hdev)
添加
添加后引用目录下有halcondotnet项
添加halcon窗口控件
同样找到
Halcon窗口控件
1.设计winform 页面
1.编写halcon程序
2.导出halcon文件
把导出的halcon文件 放入winform项目中
注释代码
拖入窗口控件 用于后续图像显示
HOperatorSet.SetSystem("width", 512)
是 HALCON 中用于设置系统级参数的函数,此处将默认图像宽度配置为 512 像素 ,影响后续生成的空图像或未指定尺寸的图像操作 ,需在 图像对象创建前 调用此函数,否则对已存在的图像无效
HOperatorSet作用
HOperatorSet 类是 HALCON 图像处理库的操作接口类,
用于执行图像读取、处理、形态学操作、特征分析等任务
通过 HOperatorSet.MethodName() 调用 HALCON 算子,如 ReadImage、Threshold
HObject:处理图像、区域、XLD(亚像素轮廓)的基类,派生类包括 HImage、HRegion、HXLD
初始化方式:HObject obj; HOperatorSet.GenEmptyObj(out obj);(创建空对象)
HTuple:存储多类型数据的元组,如数值、字符串、数组
HDevWindowStack 是 HALCON 中用于管理图形窗口句柄
Push(HTuple win_handle)
:
将窗口句柄压入堆栈,标记为当前活动窗口,后续图像操作(如DispObj
)默认作用于该窗口-
Pop()
:
移除栈顶窗口句柄并返回,通常配合CloseWindow
关闭窗口(需手动释放资源) -
GetActive()
:
获取当前活动窗口句柄,用于显式指定绘图窗口。 -
IsOpen()
:
检查堆栈中是否有已打开的窗口,避免无效操作
修改HevelopExport类
1.重载构造函数 用于传入Form中的 window对象
2.添加红框代码用于关联窗口控件显示
Form中调用方法 用于执行检测结果
运行后 展示效果
扩展:window和图片大小一致 增加代码如下
总结 联合开发流程
1.在Halcon中完成检测代码
2.导出Halcon代码为C#脚本
3.添加C#脚本 到winform项目中
4.修改C#脚本
5.winform窗口展示检测结果
注意:
使用相机halcon与vs联合开发
1.完成相机的硬件配置
2.使用Halcon图像采集助手-Image Aequisition 配置相机参数
自动检测接口 识别当前相机型号
GigeVision2 当前相机型号
点击实时采集 显示图像
2.如有需要设置相机参数
保存单张图片
点击插入代码 把相机配置代码 插入到程序中
导出 相机c#脚本
注意路径和语言
其他流程见上个案例
winform 页面设置
其他流程见上个案例
结合相机脚本代码 在Form中进行代码封装
设置相机
设置窗口
拍照并显示图片
调用窗口和相机
调用拍照
关闭相机
运行效果
检测功能
检测按钮功能
代码实现了图像的二值化处理
导出c#脚本
把c#脚本导入winform中
把脚本中检测代码复制到Form 检测按钮事件中
注释掉代码 使用拍照图像
修改ho_image 为全局字段 用于检测中图像
检测代码
运行效果