一般我们在halcon中编写好算法后,都会导出到c++或c#中调用。
这里随意导出一个halcon中的例程,演示在c#中使用导出的代码
首先是将halcon中已好的代码做导出工作
菜单栏:文件->导出
halcon 与c#联合使用
弹出的窗口选择C#格式,并点击<导出>
halcon 与c#联合使用
导出后,会在导出的目录生成一默认文件unnamed.cs。
下面
0.创建一个基于WINDOWS窗体的C#工程。
1.添加halcon引用:
点击工程,鼠标右键-》添加引用
halcon 与c#联合使用
选中halcondotnet.dll后,点击确认按钮
halcon 与c#联合使用
这样就成功添加了halcon引用
halcon 与c#联合使用
2.添加halcon窗口控件,主要用于显示图片。
打开工具箱:菜单栏->视图-》工具箱; 或快捷键 alt+ctr +x;
在工具条任意位置,鼠标右键-》选择项,弹出窗口时保持默认,点击右下角浏览按钮
浏览halcon安装目录,例如D:\Program Files\MVTec\HALCON-17.12-Progress\bin\dotnet35,
选择halcondotnet.dll,并确认。生成如下两选项。
halcon 与c#联合使用
确认后,工具箱多出两控件
halcon 与c#联合使用
将Hwindowcontrol拖拽到窗口,并添加一按钮及按钮的点击函数
halcon 与c#联合使用
3.使用刚才 导出的文件unnamed.cs
打开此文件,复制using HalconDotNet;到自己程序中。
找到action函数,复制代码到按钮点击函数体内。
4.编译
如果幸运,一切OK!直接运行程序。
如果不幸运,一般会提示错误
警告 2 当前的目标框架“.NETFramework,Version=v4.0,Profile=Client”
未包含引用的程序集“halcondotnet”所依赖的“System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”。
这会导致无法解析引用的程序集。
若要解决此问题,请 (1) 更改此项目的目标框架,或者 (2) 从此项目中删除引用的程序集。
WindowsFormsApplication1
错误 15 当前上下文中不存在名称“HDevWindowStack”
C:\Users\baikhgmv\Desktop\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs 36
17 WindowsFormsApplication1
如上的错误很显示:当前的目标框架不匹配,项目属性,进行更改便可
halcon 与c#联合使用
另外,halcon有32位和64位之分,运行遇到如下错误时
halcon 与c#联合使用
请将目标平台修改匹配。
halcon 与c#联合使用
另外运行程序时,如果图片未在控件上显示,做如下修改
HOperatorSet.OpenWindow(0, 0, 512, 512, hWindowControl1.HalconWindow, "visible", "", out hv_WindowID);
也就是修改hv_WindowID父窗口句柄为hWindowControl1.HalconWindow
运行效果如下
halcon 与c#联合使用
注:当前是win10 64位系统下使用VC2010,
halcon版本为17.2. 64位。
例程下载
|