参考文章
https://blog.csdn.net/ruotianxia/article/details/81638552
https://blog.csdn.net/daybreak___/article/details/82822090
在图像处理方面,halcon比较方便,不需要自己写太多的代码,也有例程可以学习,所以就想要尝试一下将halcon的程序导出后用在基于C#的上位机中。
软件版本为:Windows10 + VS2015 + Halcon 12
1. 配置环境
这一步不太确定是否需要,有些文章中没有介绍,但是在一篇文章中看到需要配置环境(参考文章第一篇),所以也就做了,以防后期出错。
此电脑–属性–高级系统设置–环境变量–系统环境新建
2. halcon程序导出
3. 添加halcon控件
(1)新建窗体
(2)工具箱 ——所有Windows窗体右键——选择项——浏览——halcon安装目录 C:\Program Files\MVTec\HALCON-12.0\bin\dotnet35\ ——找到halcondotnet.dll ——添加即可
(3)在工具箱中就可以看到 HWindowControl 控件
4. 添加halcon引用
(1)将halcon安装路径bin目录下:\dotnet35\ halcondotnet.dll 和\x64-win64\ halcon.dll 两个文件复制到VS文件bin目录的Debug文件夹中。
(2)解决方案资源管理器——引用——添加引用——选择Debug文件中的halcondotnet.dll添加即可。
5. 程序示例
(1)拖动控件如下,黑色的是halcon控件
(2)新建一个类,将halcon导出的程序复制到新建的类中,红框中即halcon导出的程序。要记得添加引用using HalconDotNet;
ps. 也可以直接放到Form1.cs中,注意放到public partial class Form1 : Form
后面
(3)对button进行编程
//这两句是必须的
HDevelopExport HD = new HDevelopExport();
HD.RunHalcon(hWindowControl1.HalconWindow);
//这两句是基于实验的内容所加,根据划痕面积划分为两类,将两类数量进行文本显示
textBox1.Text = HD.i.ToString();
textBox2.Text = HD.j.ToString();
(4)补充:
因为还需要根据划痕面积将划痕分为两类,并将两类划痕的数量进行文本显示,所以在halcon导出的程序中还需要添加以下内容,然后在button程序中添加(3)中的语句即可。
(参考文章第二篇,hv_Ox, hv_Oy 的使用)
6. 结果
7. 可能出错的地方
(1)要将halcondotnet.dll 和 halcon.dll放到C#程序的Debug下面,之前只放在bin下面,程序会出错;
(2)平台选择Any CPU(在很多文章中介绍选x64,但是自己实验时选择Any CPU才可以成功),所以如果出错,可以尝试更改一下平台;
(3)框架:自己是 .Net Framework 4.5.2,但是看到有博主讲要.Net Framework 4 才可以运行成功,这里也不是很懂,不过出错时也可以考虑一下是否框架版本过高,更换一下框架。