在visual studio 下配置HALCON100.docx
《在visual studio 下配置HALCON100.docx》由会员分享,可在线阅读,更多相关《在visual studio 下配置HALCON100.docx(18页珍藏版)》请在冰豆网上搜索。
![在visual studio 下配置HALCON100.docx](https://file1.bdocx.com/fileroot1/2022-11/25/4815907d-309c-41ad-91ff-6e63b21edecd/4815907d-309c-41ad-91ff-6e63b21edecd1.gif)
在visualstudio下配置HALCON100
2014/8/26
MFC和HALCON混合编程
在visualstudio2008下配置HALCON10.0
1.新建一个MFC工程文件
打开visualstudio2008->文件->新建->项目->VisualC++->MFC->MFC应用程序->输入程序名称->确定
点击下一步
点击基于对话框
点击下一步
勾选最小化框,最小化框
点击下一步
点击下一步
点击完成。
2.配置属性
●在【项目属性】->【配置属性】->【c/c++】->【常规】->【附加包含目录】中添加包含路径:
$(HALCONROOT)\include;$(HALCONROOT)\include\cpp
注意:
这里用的HALCON为10.0。
●在【项目属性】->【配置属性】->【连接器】->【常规】->【附加库目录】中添加库路径:
$(HALCONROOT)\lib\$(HALCONARCH)
●在【项目属性】->【配置属性】->【连接器】->【输入】->【附加依赖项】中添加库:
halconcpp.lib
点击确定。
生成如下项目:
3.工具->选项->项目和解决方案->VC++目录下,附加库目录和包含文件目录
添加库文件如下:
$(HALCONROOT)\lib\x86sse2-win32
包含文件设置如下:
$(HALCONROOT)\include\cpp
$(HALCONROOT)\include
点击确定。
配置完成。
把HALCON程序导出到visualStudio2008
在HDevelop中编写的程序,导出为C++。
文件->导出
选择导出文件所放的位置和类型,并选择导出。
本例中导出的halcon程序(c++)所在目录为:
C:
\Users\Administrator\Desktop\halcon\halcon\halconmfc.cpp
在3Dlg.h(头文件中),把原hdevelop程序的变量声明部分放在Rebublic下,如图:
//Localiconicvariables
HobjectFile,Region,ConnectedRegions,RegionTrans;
HobjectSelectedRegions;
//Localcontrolvariables
HTupleWidth,Height,WindowHandle;
并在该头文件中添加’halconcpp.h’,并使用命名空间,即:
#include“halconcpp.h”
usingnamespaceHalcon;
如图:
在3Dlg.cpp中包含头文件halcon.h,并使用命名空间,即:
#include“halconcpp.h”或#include“halcon.h”
usingnamespaceHalcon;
如图:
点击生成->生成解决方案
点击调试,出现下图
点击读取图像,结果如下(与在HALCON中运行结果一致):
点击图像处理:
结果如下(与HALCON中结果一致):
注意:
1.在visualstudio中导出HDevelop程序应该先导出程序,再在visualstudio中新建MFC工程并配置。
2.对话框在资源文件下下的halconmfc.rc,如下图所示:
3.要想使图像显示在对话框里,要使用父窗口命令:
HlongMainWndID=(Hlong)m_hWnd
2014/8/27
1.在MFC/Halcon混合编程中,如何使得读取的图像和处理以后的图像同时并列显示的对话框中?
解决过程:
1)在对话框中通过工具栏添加两个图片框:
2)在读取图像的程序下,复制如下代码:
CRectrtWindow1;
GetDlgItem(ID1)->GetClientRect(&rtWindow1);//ID1为第一个图像控件的ID号,第二个窗口类似处理。
HWNDhImgWnd=GetDlgItem(ID1)->m_hWnd;
HlongMainWndID=(Hlong)m_hWnd;
注意:
ID1为第一个图像控件的ID号,第二个窗口类似处理,但注意两个窗口的ID号要不同。
并且把open_window函数改成如下代码 :
open_window(rtWindow1.left,rtWindow1.top,rtWindow1.Width(),rtWindow1.Height(),(Hlong)hImgWnd,"visible","",&WindowHandle);
HDevWindowStack:
:
Push(WindowHandle);
即:
然后在“图像处理”里面添加如下代码:
CRectrtWindow2;
GetDlgItem(ID2)->GetClientRect(&rtWindow2);//ID1为第一个图像控件的ID号,第二个窗口类似处理。
HWNDhImgWnd=GetDlgItem(ID2)->m_hWnd;
open_window(rtWindow2.left,rtWindow2.top,rtWindow2.Width(),rtWindow2.Height(),(Hlong)hImgWnd,"visible","",&WindowHandle);
HDevWindowStack:
:
Push(WindowHandle);
即:
3)运行程序,结果如下:
2014/8/28
2.在例子中使用的读取图像,读出的是一张图像,如何编程生成菜单项的形式?
3.如何在没有安装halcon的计算机下打开已经生成的项目?
以及如何在没有安装VS,VC的环境下打开生成的项目?
解答:
在既没有安装halcon,也没有安装vc或vs的电脑上,运行已经编好的mfc工程的方法:
1)新建一个MFC应用程序,如上。
在配置配置环境变量时,需要比上节多配置【常规】->【MFC使用】->【在静态库中使用MFC】
2)其他的配置和上一节一样。
成功生成解决方案并调试程序。
把建立的项目下的Debug文件夹复制到u盘下,并按如下要求复制如下文件:
把license文件放到工程文件目录下(\bin\Debug目录下);
把halcon.dll,halconcpp.dll文件复制到工程文件目录下;
创建C:
\ProgramFiles\MVTec\halcon,然后把help文件夹复制进去。
注意:
要把所使用的图片存在Debug文件夹下。
3)把u盘放在一个没有安装Halcon和vs的环境中就可以运行成功。