halcon第八讲:halcon联合vc其配置及例程

halcon在vc中的配置,以及halcon联合vc实现图像的采集显示。

一、vc配置halcon:

1、项目—》属性—》c/c++—》常规—》附件包含目录-》添加/include和/include/halconcpp两个目录;

2、链接器—》常规—》附加库目录—》添加lib/x64_win64目录;

3、链接器—》输入—》附加依赖项—》编辑为halconcpp.lib;

4、配置动态链接库,将bin/x64_win64里所有的dll文件拷贝到项目中,每次新建个项目都需要这么做较繁琐,这里直接在系统环境变量中配置路径,将该路径拷贝到系统环境变量的path中,以分号结束即可,第一次需重启;

5、在vc程序中添加#include“halconcpp.h”头文件和using namespace HalconCpp命名空间。

至此,halcon在vc中的配置全部结束,但每次新建个项目都需要进行上面的配置太麻烦,可以在项目属性表里添加新项目属性表,保存在一路径后再在项目属性表中打开进行上面的配置保存,下次使用直接在项目属性表中添加现有属性表,找到该属性表即可。

二、halcon联合vc实现图像的采集显示

1、在halcon中完成程序的实现,导出为c++格式;

2、新建项目—》vc++—》MFC,下一步选择基于对话框点击完成;

3、配置halcon,添加现有属性表;

4、打开资源视图,将对话框中默认的控件删除,添加自己需要的控件;

5、双击button控件,打开消息响应函数,在该函数中添加#include“halconcpp.h”头文件和using namespace HalconCpp命名空间;

6、将c++格式的halcon程序打开,复制action里面的代码到消息响应函数里即可。

消息响应函数如下:

//halcon中只用看action里面的代码,将其拷过来即可
void CMFCApplication1Dlg::OnBnClickedButton1()
{
        //halcon中只有图像、区域、XLD为Object类型,其余都为Tuple类型	
        HObject  ho_Image1;
	HTuple  hv_Width, hv_Height, hv_WindowHandle,kuan,gao;

	//定义一个句柄
	HWND hwnd;
        //GetDlgItem(ID号),通过ID号得到该控件,通过指针访问其成员变量	
	//每个控件都有个成员变量m_hWnd,即该控件的句柄,
	hwnd = GetDlgItem(IDC_STATIC)->m_hWnd;
	//强制类型转化
	LONG windowID = (LONG)hwnd;

	//定义一个矩形变量
	CRect rect;
	GetDlgItem(IDC_STATIC)->GetWindowRect(&rect);
	kuan[0] = rect.Width();
	gao[0] = rect.Height();

	ReadImage(&ho_Image1, "C:/Users/Administrator/Desktop/halcon/第八讲、halcon联合vc/1.jpg");
	GetImageSize(ho_Image1, &hv_Width, &hv_Height);
	SetWindowAttr("background_color", "black");

	//得到控件的句柄,放入第五个参数,即在该控件上打开一个窗口,
	//获得控件窗口的宽和高,分别放入第三、四个参数,则图像在整个控件窗口上显示
	OpenWindow(0, 0, kuan[0], gao[0], windowID, "", "", &hv_WindowHandle);

	HDevWindowStack::Push(hv_WindowHandle);
	if (HDevWindowStack::IsOpen())
		DispObj(ho_Image1, HDevWindowStack::GetActive());
}

编译执行,点击采集图像按钮,运行结果入下:

猜你喜欢

转载自blog.csdn.net/qq_24946843/article/details/82079862