wenluderen
论坛版主
论坛版主
  • 最后登录2017-09-29
  • 发帖数292
  • 金币4815枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:13669回复:36

图像处理番外篇: 在VS2010下 使用HALCON12 的库

楼主#
更多 发布于:2015-01-05 15:10
各位老大:
HALCON 本质上讲 是一个函数库, 虽然也有HALCON10 11 12 之类的开发环境,但是这些东西顶到天上去 不过是给我们调试算子用的,他没有办法开发出一个好看使用的界面出来。
所以我们要使用其他开发环境,我选择了VS2010。
对于在如何在VS2010中调用HALCON的算法库,有很多前人提供不少经验。
比如:
halcon11.0与vs2010的配置.docx
VS2008配HALCON.docxhalcon11.0与vs2010的配置.docxVS2008配HALCON.docx


这些文档都是实用的,我昨天和今天在持续测试,最终结果是达到了。但是也遇到一些问题。
我把流程和问题记录下来 ,算是一个参考。
××××××××××××××××××××××××××××××以上是背景×××××××××××××××××××××××××××××××××××××××
系统:Windows7 64位
IDE:VS2010  (在微软官方升级SP1)
HALCON:12版本


步骤一:按照文档halcon11.0与vs2010的配置.docx配置环境。
遇到的问题是:
Q:打开项目-属性-选择配置属性-点击配置管理器-将win32改成x64
A: 系统没有提供修改 或是重命名的方法。我是通过(见下图)

图片:2015-01-05_145517.jpg




图片:2015-01-05_145547.jpg





至此就可以在VS2010里面使用 HALCON的算子了。
(特别说明: 其实要想在VS2010里面使用HALCON的算子 有三种方案  halcon学习网的文档里有。)


步骤二:正式使用
有两种方法在VS2010里面使用。一个是直接写HALCON的代码(需要对HALCON的C++代码很熟悉),
一个是在HALCON里面开发完毕后 导出(黑土老师的基础教程里有 我就不再赘余)。
遇到的问题:
Q1 :HALCON的代码随着版本的升级了,老式的代码函数 有有下划线的,现在采用匈牙利命名法。
A1:HALCON的帮助文档里 ,在左上角可以选择当前版本的 C C++ VB语法 照抄就可以了




Q2:论坛里有个帖子将  VC和HALCON的数据转换
http://www.ihalcon.com/read-1562.html
但是如果你要将字符转成 Htuple 格式的时候 ,请务必将
按照下图配置 字符格式

图片:2015-01-05_150755.jpg



我试过了这样 非常好 甚至支持中文路径。








源代码:
http://pan.baidu.com/s/1jGmomlK
mppstyle
助理工程师
助理工程师
  • 最后登录2017-05-22
  • 发帖数51
  • 金币346枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
沙发#
发布于:2015-01-07 15:50
之前配置的一直出错,今天配置一下突然又好了。
wenluderen
论坛版主
论坛版主
  • 最后登录2017-09-29
  • 发帖数292
  • 金币4815枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
  • 原创写手
板凳#
发布于:2015-01-07 16:10
mppstyle:之前配置的一直出错,今天配置一下突然又好了。回到原帖
配置完毕 要重新启动 VS2010
mppstyle
助理工程师
助理工程师
  • 最后登录2017-05-22
  • 发帖数51
  • 金币346枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
地板#
发布于:2015-01-07 16:29
wenluderen:配置完毕 要重新启动 VS2010回到原帖
请问一下,我配置完了没出错,定义一个HObject变量运行就会提示无法启动程序,计算机丢失halconcpp.dll,但是我看HALCON里面dll存在的啊,这是为什么呢?我用的是halcon12.
wenluderen
论坛版主
论坛版主
  • 最后登录2017-09-29
  • 发帖数292
  • 金币4815枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
  • 原创写手
4楼#
发布于:2015-01-13 14:48
目的: 浏览一个文件 并且导入
第一步: 只用VS2010 向导工具生成一个 对话框MFC程序
第二步:根据黑土老师的教程 配置  环境
第三步: 在对话框里面添加一个 图片控件(picture control)
并在 OnInitDialog 函数里面初始化他
××××××××××××××××××××××××××××××××××××××××××

BOOL CGszHalconDlg::OnInitDialog()
{
 CDialogEx::OnInitDialog();


 // 将“关于...”菜单项添加到系统菜单中。


 // IDM_ABOUTBOX 必须在系统命令范围内。
 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
 ASSERT(IDM_ABOUTBOX < 0xF000);


 CMenu* pSysMenu = GetSystemMenu(FALSE);
 if (pSysMenu != NULL)
 {
 BOOL bNameValid;
 CString strAboutMenu;
 bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
 ASSERT(bNameValid);
 if (!strAboutMenu.IsEmpty())
 {
 pSysMenu->AppendMenu(MF_SEPARATOR);
 pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
 }
 }


 // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
 //  执行此操作
 SetIcon(m_hIcon, TRUE); // 设置大图标
 SetIcon(m_hIcon, FALSE); // 设置小图标


 // TODO: 在此添加额外的初始化代码
//picture 控件初始化
CRect tmpRect;
//获得picture 控件的矩形区域
GetDlgItem(IDC_VIEW)->GetClientRect(&tmpRect);
//把picture控件和halcon关联 ,返回显示图形的窗口句柄
//获得picture控件的窗口句柄后,要强制转化为Hlong型数据
OpenWindow(0,0,tmpRect.Width(),tmpRect.Height(),(Hlong)(GetDlgItem(IDC_VIEW)->GetSafeHwnd()),"visible","",&m_hWindowHandle);

SetDraw(m_hWindowHandle,"margin");
SetColored(m_hWindowHandle,12);
SetLineWidth(m_hWindowHandle,2);


//设置halcon内部处理的宽度和高度
SetSystem("tsp_width",3000);
SetSystem("tsp_height",3000);
//picture控件初始化完毕了。




 return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
第四步:添加一个按钮 并且 创建鼠标单击消息响应函数
×××××××××××××××××××××××××××××××××××××××××××××××××××××
void CGszHalconDlg::OnBnClickedBtnReadImage()
{
 // TODO: 在此添加控件通知处理程序代码
 HTuple Width,Height;
 HTuple PathGsz ;  
 CString GszPath;


 //弹出打开图像文件的对话框
 //对话框风格,一般为OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 即隐藏只读选项和覆盖已有文件前提示。
 CFileDialog dlg(TRUE);
 //CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"*.bmp,*jpg,*jpeg|*.bmp;*.jpg;*.jpeg||");
 //加载文件成功 就显示文件
 if (dlg.DoModal()==IDOK)
 {
 //复位显示的图像变量
  
 }
 
 GszPath=dlg.GetPathName();
 PathGsz[0]=GszPath.GetBuffer();
 ReadImage(&m_Image,  PathGsz[0]);
 //ReadImage(&m_Image, "F:/雷池/jiqi.png");
 GetImageSize(m_Image,&Width,&Height);
 SetPart(m_hWindowHandle,0,0,Height-1,Width-1);
 DispObj(m_Image,m_hWindowHandle);
}




源代码:http://pan.baidu.com/s/1kTgMIlp
int666
初学者
初学者
  • 最后登录2017-01-08
  • 发帖数14
  • 金币40枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
5楼#
发布于:2015-01-14 22:43
很实用,很好哦
baoyuanle
技术员
技术员
  • 最后登录2016-07-08
  • 发帖数21
  • 金币134枚
  • 贡献勋章0枚
  • 社区居民
6楼#
发布于:2015-01-18 15:29
你好,我装的64位halcon 配合使用vs 做MFC  x64下正常编译运行  win32编译不过 请问怎么配置win32呢? 谢谢
俺家有田种
专家
专家
  • 最后登录2017-10-10
  • 发帖数353
  • 金币2036枚
  • 贡献勋章0枚
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 追星一族
  • 社区居民
7楼#
发布于:2015-04-20 19:13
你好我是想在vc++6.0中配置halcon,该怎么配置?
学习的同时不断分享!
weidy29
初学者
初学者
  • 最后登录2016-01-22
  • 发帖数6
  • 金币28枚
  • 贡献勋章0枚
  • 社区居民
8楼#
发布于:2015-08-20 15:23
我学习来啦~~~很好很感激~~~~~
cdio_jie
初学者
初学者
  • 最后登录2016-02-17
  • 发帖数4
  • 金币30枚
  • 贡献勋章0枚
9楼#
发布于:2015-12-18 16:42
我按照做了之后发现这个错误:
error C3861: “open_window”: 找不到标识符
ku8ku8
初学者
初学者
  • 最后登录2017-10-20
  • 发帖数8
  • 金币47枚
  • 贡献勋章0枚
10楼#
发布于:2016-01-24 20:34
mark。。。。。。。。。。。
woziji7788
技术员
技术员
  • 最后登录2016-06-17
  • 发帖数30
  • 金币105枚
  • 贡献勋章0枚
  • 社区居民
11楼#
发布于:2016-01-26 11:18
xuexi刷金币呵呵刷金币呵呵刷金币呵呵刷金币呵呵刷金币呵呵刷金币呵呵
Feather
初学者
初学者
  • 最后登录2017-06-29
  • 发帖数20
  • 金币83枚
  • 贡献勋章0枚
  • 社区居民
12楼#
发布于:2016-01-27 11:48
其实配置是非常简单的事儿,算法才应该是重点!
zxx6176
禁止发言
禁止发言
  • 最后登录2017-04-17
  • 发帖数47
  • 金币174枚
  • 贡献勋章0枚
  • 社区居民
13楼#
发布于:2016-02-16 09:15
用户被禁言,该主题自动屏蔽!
tiantiansweety
初学者
初学者
  • 最后登录2016-03-04
  • 发帖数4
  • 金币34枚
  • 贡献勋章0枚
14楼#
发布于:2016-02-22 16:30
内容很详细,安装楼主的介绍,可以成功运行。
上一页
游客

返回顶部