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版本的问题导致的!
Halcon与MFC交互编程的更多相关文章
- firefox 扩展开发笔记(三):高级ui交互编程
firefox 扩展开发笔记(三):高级ui交互编程 前言 前两篇链接 1:firefox 扩展开发笔记(一):jpm 使用实践以及调试 2:firefox 扩展开发笔记(二):进阶开发之移动设备模拟 ...
- MFC对话框编程详细学习笔记
因最近研究工作要用到MFC,故再次重温了孙鑫老师的MFC对话框编程,因所用的编译软件为VS2008,与视频中孙老师使用的VC++6.0有很大出入,造成很大不便,我通过各方查找,实现了VS2008相对应 ...
- 转:MFC网络编程学习
要学习好网路编程,主要看以下几个方面: 1.掌握概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等. 2.在实际Windows网络通信软件开发中,异步非阻 ...
- mfc socket编程
socket编程用法---- 随着计算机网络化的深入,计算机网络编程在程序设计的过程中变得日益重要.由于C++语言对底层操作的优越性,许多文章都曾经介绍过用VC++进行Socket编程的方法.但由于都 ...
- halcon与C#混合编程进阶版
这篇主要是C#和Halcon的混合编程,在此基础上对按键不同功能的划分,以及图片适应窗口和从本地打开图片. 新手来这里:http://www.cnblogs.com/badguy518/p/55150 ...
- 《转》MFC网络编程学习
原地址:http://www.cnblogs.com/renyuan/archive/2013/06/04/3117006.html要学习好网路编程,主要看以下几个方面: 1.掌握概念,诸如:同步(S ...
- MFC 网络编程中::connect返回-1问题
在MFC编写网络时遇到了::connect总是返回-1,但是与服务器可以进行接收和发送消息的操作. 原因是在进行连接的时候我没有进行初始化:::WSAStartup(w, &data);//动 ...
- MFC 网络编程 -- 总结
原文链接:http://www.cnblogs.com/lidabo/archive/2012/07/19/2598734.html 1.基于 TCP 的 socket 编程 /* 服务器端程序流程: ...
- iOS - Swift 与 C 语言交互编程
前言 作为一种可与 Objective-C 相互调用的语言,Swift 也具有一些与 C 语言的类型和特性,如果你的代码有需要,Swift 也提供了和常见的 C 代码结构混合编程的编程方式. 1.基本 ...
随机推荐
- sicily1024 Magic Island(图的遍历)
Description There are N cities and N-1 roads in Magic-Island. You can go from one city to any other. ...
- 算法:x的n次方
该题是用来公司教学,并无难度.用于说明算法效率差异以及循环和递归的效率差别. package practice; import java.math.BigDecimal; /** * @author ...
- 【腾讯Bugly干货分享】React移动web极致优化
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/579083d1c9da73584b02587d 最近一个季度,我们都在为手Q家校 ...
- mongodb(副本集)
副本集是mongo下的一种集群配置方式: 1.通过oplog的方式将主节点数据同步到副本节点,oplog不记录查询语句(因为不改变数据): 2.mongo的副本集可以有一个主节点,多个副本节点,主节点 ...
- java中的Static class
Java中的类可以是static吗?答案是可以.在java中我们可以有静态实例变量.静态方法.静态块.类也可以是静态的. java允许我们在一个类里面定义静态类.比如内部类(nested class) ...
- PS 多次剪裁同一图片
一个图品里面有两个小图,要分别抠出来. 我以前的做法是,先扣一个,重新打开文件,再扣另外一个. 今天发现一个简单的办法,不用重新打开文件. 就是在扣完第一个的时候,打开历史记录面板,双击 打开 动作, ...
- java 内存观察
总结一下上周的工作. 主要就是用到了 jmap jvisualvm jmap 用来生成jvm堆内存的bin文件 jvisualvm则更强大. 待续.
- 移动 Web 触摸与运动解决方案 AlloyTouch 开源啦
传送门 Github地址:https://github.com/AlloyTeam/AlloyTouch 简介 AlloyTouch的本质是运动一个数字,把数字的物理变化映射到你想映射的任何属性上.所 ...
- 我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器
回到目录 AOP面向切面的编程,也称面向方面的编程,我更青睐于前面的叫法,将一个大系统切成多个独立的部分,而这个独立的部分又可以方便的插拔在其它领域的系统之中,这种编程的方式我们叫它面向切面,而这些独 ...
- EF架构~CodeFirst生产环境的Migrations
回到目录 Migrations即迁移,它是EF的code first模式出现的产物,它意思是说,将代码的变化反映到数据库上,这种反映有两种环境,一是本地开发环境,别一种是服务器的生产环境,本地开发环境 ...