Halcon与MFC交互编程
Halcon是商业化的机器视觉软件。网上下了halcon10的破解版,安装后编写了个图像显示的MFC小程序。
编译器用的是VS2008。
1 配置halcon环境
新建为MFC后,在VC++目录中配置包含文件和库文件
include路径:D:\Program Files\MVTec\HALCON-10.0\include
D:\Program Files\MVTec\HALCON-10.0\include\cpp
主要是安装halcon的路径
lib文件: D:\Program Files\MVTec\HALCON-10.0\lib\x86sse2-win32
2 MFC程序中添加头文件、命名控件、静态链接库
我是在stdafx.h中加 #include <halconcpp.h> using namespace Halcon;
静态链接库,我是在链接器输入的附加依赖项中添加halconcpp.lib
图像显示程序如下
加入变量
Halcon::HTuple m_htWindow;
Halcon::Hobject m_hoImage;
CString m_editOpenDir;
3 添加代码:
在初始化对话框中添加
CRect rtWindow;
HWND hImgWnd = GetDlgItem( IDC_BMPWINDOW)->m_hWnd;
GetDlgItem( IDC_BMPWINDOW)->GetClientRect(&rtWindow);
Halcon::open_window(rtWindow.left, rtWindow.top, rtWindow.Width(), rtWindow.Height(), (Hlong)hImgWnd, "visible", "", &m_htWindow);
Halcon::set_part(m_htWindow, 0, 0, 200-1, 200-1);//其中 IMG_HEIGHT 、IMG_WIDTH分别为512,,400.这个可以自行定义。
在打开图像按钮中添加
char* pcsun="图片文件(*.bmp)|*.bmp||";
CFileDialog OpenDialog(TRUE,NULL,0,OFN_OVERWRITEPROMPT,pcsun,NULL);
if(OpenDialog.DoModal() == IDCANCEL) return;
//返回带文件名的路径,并传递给编辑控件变量
m_editOpenDir = OpenDialog.GetPathName();
UpdateData(FALSE);
在显示图像按钮中添加
CString str;
str=m_editOpenDir;
char* ch=(char*)LPCTSTR(str);
Halcon::read_image(&m_hoImage, ch);
Halcon::disp_obj(m_hoImage, m_htWindow);
注意: error C2259: “Halcon::HObject”: 不能实例化抽象类
这个错误其实是Hobject o要小写,可能这是halcon版本的问题导致的!