halcon作为机器视觉开发主流工具,掌握c#与halcon的混合编程,只是进入视觉开发领域大门的第一步。
1.新建一个Windows窗体应用程序,命名为Demo
2.添加Halcon组件
右键引用 -> 选择添加引用:
选择浏览:
在你自己Halcon的安装路径下,找到bin/dotnet35/,选择halcondotnet.dll文件,点击确定:
确定后,会在解决方案下引用列表中找到我们刚刚添加的halcon组件:
3.更改框架
右键工程 -> 属性,打开属性设置:
这里单击目标框架下拉框,如果目标框架是.NET Framework 4 Client Profile,需点击下拉框将其改为.NET Framework 4。否则可能会报错:warning MSB3253: 未能解析引用的程序集“halcondotnet”,因为它对不在当前目标框架“.NETFramework,Version=v4.0,Profile=Client”中的“System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”具有依赖关系。请删除对不在目标框架中的程序集的引用,或考虑重新确定项目的目标。
4.添加halcon的窗口控件
右键工具箱 -> 选择项:
弹出一个选择工具项项对话框,点击浏览按钮:
在你自己halcon安装目录下的/bin/dotnet35/文件加下,添加halcondotnet.dll组件:
然后.NET Framework组件中就会自动添加上HSmartWindowControl和HWindowControl两个组件,点击确定:
此时,工具箱 - > 常规选项中就会出现两个添加的halcon窗口控件:
这里,我们选择HWindowControl窗口控件在主窗口中拖出一个窗口,同时添加两个按键:
5.下一步,我们从Hdevelp中导出已经写好的Halcon程序。
这里用halcon中自带的例程lines_gauss为例:
在HDevelop中打开程序lines_gauss,点击文件 -> 导出,按照下图的配置选项进行选择:
右键Demo工程,添加 -> 现有项,找到刚刚我们导出的lines_gauss.cs文件,并点击确定:
6.打开lines_gauss.cs文件,修改部分代码如下:
public void RunHalcon(HTuple Window, HObject srcImage){ hv_ExpDefaultWinHandle = Window; action(srcImage);} private void action(HObject ho_srcImage){ // ho_Angio.Dispose(); // 注释掉这两句 // HOperatorSet.ReadImage(out ho_Angio, "angio-part"); ho_Angio = ho_srcImage;}
7.打开主程序,添加引用,using HalconDotNet; 同时添加以下的按钮事件代码:
private HObject ho_srcImage = null;private HDevelopExport m_objHalcon = new HDevelopExport();private void m_btn_Load_Click(object sender, EventArgs e){ HTuple hv_Height = 0, hv_Width = 0; openFileDialog1.InitialDirectory = System.AppDomain.CurrentDomain.ToString(); openFileDialog1.Filter = "(*.png,*.jpg,*.bmp,*.jpeg)|*.png;*.jpg;*.bmp;*.jpeg|All files (*.*)|*.*"; openFileDialog1.FilterIndex = 1; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { HOperatorSet.ReadImage(out ho_srcImage, (HTuple)openFileDialog1.FileName); HOperatorSet.ClearWindow(hWindowControl1.HalconWindow); HOperatorSet.GetImageSize(ho_srcImage, out hv_Width, out hv_Height); HOperatorSet.SetPart(hWindowControl1.HalconWindow, 0, 0, hv_Height - 1, hv_Width - 1); HOperatorSet.DispObj(ho_srcImage, hWindowControl1.HalconWindow); }}private void m_btn_Run_Click(object sender, EventArgs e){ if (ho_srcImage != null) { m_objHalcon.RunHalcon(hWindowControl1.HalconWindow, ho_srcImage); }}
8.保存并运行程序,点击加载图片按钮,图像处理按钮
选择C:\Users\Public\Documents\MVTec\HALCON-17.12-Progress\examples\images下的angio-part.png图片:
点击图像处理按钮,最终的处理结果如下图所示:
注意:文章来源于网络博客https://blog.csdn.net/IntegralforLove/article/details/84872496
End
声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。