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交互编程的更多相关文章

  1. firefox 扩展开发笔记(三):高级ui交互编程

    firefox 扩展开发笔记(三):高级ui交互编程 前言 前两篇链接 1:firefox 扩展开发笔记(一):jpm 使用实践以及调试 2:firefox 扩展开发笔记(二):进阶开发之移动设备模拟 ...

  2. MFC对话框编程详细学习笔记

    因最近研究工作要用到MFC,故再次重温了孙鑫老师的MFC对话框编程,因所用的编译软件为VS2008,与视频中孙老师使用的VC++6.0有很大出入,造成很大不便,我通过各方查找,实现了VS2008相对应 ...

  3. 转:MFC网络编程学习

    要学习好网路编程,主要看以下几个方面: 1.掌握概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等. 2.在实际Windows网络通信软件开发中,异步非阻 ...

  4. mfc socket编程

    socket编程用法---- 随着计算机网络化的深入,计算机网络编程在程序设计的过程中变得日益重要.由于C++语言对底层操作的优越性,许多文章都曾经介绍过用VC++进行Socket编程的方法.但由于都 ...

  5. halcon与C#混合编程进阶版

    这篇主要是C#和Halcon的混合编程,在此基础上对按键不同功能的划分,以及图片适应窗口和从本地打开图片. 新手来这里:http://www.cnblogs.com/badguy518/p/55150 ...

  6. 《转》MFC网络编程学习

    原地址:http://www.cnblogs.com/renyuan/archive/2013/06/04/3117006.html要学习好网路编程,主要看以下几个方面: 1.掌握概念,诸如:同步(S ...

  7. MFC 网络编程中::connect返回-1问题

    在MFC编写网络时遇到了::connect总是返回-1,但是与服务器可以进行接收和发送消息的操作. 原因是在进行连接的时候我没有进行初始化:::WSAStartup(w, &data);//动 ...

  8. MFC 网络编程 -- 总结

    原文链接:http://www.cnblogs.com/lidabo/archive/2012/07/19/2598734.html 1.基于 TCP 的 socket 编程 /* 服务器端程序流程: ...

  9. iOS - Swift 与 C 语言交互编程

    前言 作为一种可与 Objective-C 相互调用的语言,Swift 也具有一些与 C 语言的类型和特性,如果你的代码有需要,Swift 也提供了和常见的 C 代码结构混合编程的编程方式. 1.基本 ...

随机推荐

  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. ...

  2. 算法:x的n次方

    该题是用来公司教学,并无难度.用于说明算法效率差异以及循环和递归的效率差别. package practice; import java.math.BigDecimal; /** * @author ...

  3. 【腾讯Bugly干货分享】React移动web极致优化

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/579083d1c9da73584b02587d 最近一个季度,我们都在为手Q家校 ...

  4. mongodb(副本集)

    副本集是mongo下的一种集群配置方式: 1.通过oplog的方式将主节点数据同步到副本节点,oplog不记录查询语句(因为不改变数据): 2.mongo的副本集可以有一个主节点,多个副本节点,主节点 ...

  5. java中的Static class

    Java中的类可以是static吗?答案是可以.在java中我们可以有静态实例变量.静态方法.静态块.类也可以是静态的. java允许我们在一个类里面定义静态类.比如内部类(nested class) ...

  6. PS 多次剪裁同一图片

    一个图品里面有两个小图,要分别抠出来. 我以前的做法是,先扣一个,重新打开文件,再扣另外一个. 今天发现一个简单的办法,不用重新打开文件. 就是在扣完第一个的时候,打开历史记录面板,双击 打开 动作, ...

  7. java 内存观察

    总结一下上周的工作. 主要就是用到了 jmap jvisualvm jmap 用来生成jvm堆内存的bin文件 jvisualvm则更强大. 待续.

  8. 移动 Web 触摸与运动解决方案 AlloyTouch 开源啦

    传送门 Github地址:https://github.com/AlloyTeam/AlloyTouch 简介 AlloyTouch的本质是运动一个数字,把数字的物理变化映射到你想映射的任何属性上.所 ...

  9. 我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器

    回到目录 AOP面向切面的编程,也称面向方面的编程,我更青睐于前面的叫法,将一个大系统切成多个独立的部分,而这个独立的部分又可以方便的插拔在其它领域的系统之中,这种编程的方式我们叫它面向切面,而这些独 ...

  10. EF架构~CodeFirst生产环境的Migrations

    回到目录 Migrations即迁移,它是EF的code first模式出现的产物,它意思是说,将代码的变化反映到数据库上,这种反映有两种环境,一是本地开发环境,别一种是服务器的生产环境,本地开发环境 ...