halcon联合C#实现实时显示
下面我们开始进行halcon联合C#进行编程,开发出应用程序,举例实现在C#中打开相机,显示图片。(在我的资源里面有源码下载)
1.打开Visual Studio 2010,如下图
新建一个windows窗体应用程序,选择好项目保存位置。
2.设置环境与halcon对接上 在引用处添加目录,如图
选择该目录下halcondotnet.dll,并确定。
在应用下就会多一个halcondotnet的项。
注意需要清楚你安装的halcon是32位还是64位,在创建C#工程的使用需要改成和halcon一样,所以我这里使用64位的平台开发。
3.为了在C#界面里面显示图片,我们在C#窗口里面放一个pictureBox显示图片控件,并修改一下名字。
在加载函数中添加打开窗口的代码,如下图
在添加代码之前先添加使用halcon的命名空间:using HalconDotNet;
在函数中添加打开窗口的代码
定义窗口句柄ID
HTuple hv_WindowId;
和在函数中添加代码
HOperatorSet.OpenWindow(0, 0, pictureBoxShow.Width, pictureBoxShow.Height, pictureBoxShow.Handle, "", "",out hv_WindowId);
编译运行一下,可能会报错:
这是没有找到halcon.dll。我们在halcon的安装目录
C:\Program Files\MVTec\HALCON-12.0\bin\x64-win64下面可以找到halcon.dll,并将它拷贝到项目工程的运行目录下面。
继续编译运行就会出现黑色的显示窗口。若没有报错则不需要。
至此VC#与halcon联合编程的环境就设置OK了。
在初始化打开相机,并采图显示
1)使用halcon的采集助手打开相机,并生成代码,这里我打开的是我的电脑的摄像头。
导出C#
打开GrebCam.cs,找到action函数
拷贝打开相机的代码到初始化位置,定义相机句柄为全局
单步调试打开相机
可能会出错,这是使用DLL没有找到,将hAcqDirectShow.dll,拷贝到运行目录下即可。
注意若还遇到下面的错误,我将项目目录换到没有中文的目录的下就好了。
得到运行的效果:
6.添加采图显示代码
定义图像变量和图像的尺寸变量
添加采图代码
执行结果:
说明打开相机,并采图成功。
开线程进行实时采图 在界面上添加一个按钮作为实时采集
添加消息响应函数和代码,定义一个全局变量,用来标记是否为实时采图状态,开线程进行循环采图。
开线程需要先添加命名空间:
定义全局变量:
在消息响应函数中添加开启关闭线程。
定义实时采图的线程函数:
运行结果
点击实时