Halcon中除了依赖于HDevelop平台的操作,其他算子都支持了C++语言接口,比如: read_image()算子:
而dev_display()则没有C++的接口:
我们使用Halcon导出一个简单的功能算子:
在HDevelop中只添加read_image (Image, 'fabrik')
一行代码,选择“文件”–“导出”,在“导出”窗口中选择导出文件的格式(C++ - HALCON/C++)并选择导出路径:
这样在路径下我们会看到一个.cpp文件:
这个文件中,功能已经被定义到了action()函数中,所以我们需要的也只是该函数中的内容:
void action()
{
// Local iconic variables
HObject ho_Image;
ReadImage(&ho_Image, "fabrik");
}
可以看到,这个函数中调用的其实就是HDevelop帮助文档中read_image (Image, 'fabrik')
算子的C++接口。
我们使用VS2010测试这个导出的函数,新建一个工程并添加一个空的文件,在Halcon导出的cpp文件中摘录如下代码:
#ifndef __APPLE__
# include "HalconCpp.h"
# include "HDevThread.h"
# if defined(__linux__) && !defined(NO_EXPORT_APP_MAIN)
# include <X11/Xlib.h>
# endif
#else
# ifndef HC_LARGE_IMAGES
# include <HALCONCpp/HalconCpp.h>
# include <HALCONCpp/HDevThread.h>
# else
# include <HALCONCppxl/HalconCpp.h>
# include <HALCONCppxl/HDevThread.h>
# endif
# include <stdio.h>
# include <HALCON/HpThread.h>
# include <CoreFoundation/CFRunLoop.h>
#endif
using namespace HalconCpp;
using namespace std;
int main()
{
HObject ho_Image;
ReadImage(&ho_Image, "1.jpg");
return 0;
}
设置VS2010
1.注意Halcon版本与VS2010中的应用程序对应 如果Halcon是64位的,那么其对应的lib同样是64位,这是选择Win32程序的话会导致无法加载库,所以我们需要想VS2010中的Win32改成X64。
2.引入必要的头文件 在(项目属性)–(配置属性)–(C/C++)–(常规)–“附加包含目录”中添加路径:
$(HALCONROOT)/include
$(HALCONROOT)/include/halconcpp
3.包含库路径 在(项目属性)–(配置属性)–(链接器)–(常规)–“附加库目录”中添加库路径:
$(HALCONROOT)/lib/$(HALCONARCH)
4.添加库 在(项目属性)–(配置属性)–(链接器)–(输入)–“附加依赖项”中添加库:
halconcpp.lib
5.添加dll文件 将缺少的dll文件放进工程目录源文件所在的位置。Halcon的dll文件在*****\bin\x64-win64路径下。