Halcon11和Halcon10C++接口使用
Halcon11和Halcon10相比采用了新的C++接口,新接口特点如下:
1)新版本Halcon/C++接口与Halcon/.NET接口统一
2)拥有基于异常的错误处理
3)增加新类HString
4)支持数据类例如:HPose
5)使面向过程和面向对象的混合编程更加简单
值得注意的是Halcon11不是向下兼容的,也就是说 Halcon11不兼容Halcon10以及之前的版本。如果用户想将原来写的Halcon10/C++代码移植到Halcon11中则需要进行相应的改动,包括编程环境配置、变量定义、函数名称等等。下面我们对代码移植进行一个较详细说明。
1)链接库更改:
Windows系统改为:
/libpath:"$(HALCONROOT)\lib\$(HALCONARCH)"halconcpp10.lib
Linux系统改为:
-L$(HALCONROOT)/lib/$(HALCONARCH)-lhalconcpp10 -lhalcon
2)代码更改:
a) 命名空间修改:
// 旧版 // 新版
using namespace Halcon; using namespaceHalconCpp;
... ...
b) 代码修改:
i. 函数命名更改,例如:mean_image改为MeanImage
ii. 错误处理要基于异常捕捉
iii. 新版不再支持数组标志Array,例如:HImageArray改为HImage
iv. 使用HString做文字输出
v. 从程序中移除,替换为(注意下划线部分)
vi. 运算符以及变量命名变更:
//旧版 //新版
GetEnv TupleEnvironment
ToString(pattern) TupleString(pattern)
Subset TupleSelect
Add, Sum, Sin,... TupleAdd, TupleSum,TupleSin, ...
Substring 无
Reset Clear
变更例子:
//旧版 //新版
... ...
Hobject Iconic; HObject Iconic; //upper-case O
HImage Image; HImage Image;
HImageArray Images; HImage Images;
HRegionArray Regions; HRegion Regions;
HXLDArray XLDs; HXLD XLDs;
char Characters[MAX_STRING]; HStringCharacters;
... ...
read_image(&Iconic,"clip")ReadImage(&Iconic,"clip") long Var; Hlong Var;
HTuple Values;HTuple Values; ... ...
Var = Values.Num();Var = Values.Length(); ... ...
备注:#define HCPP_LEGACY_API可以使用旧的HTuple成员函数
例如:
HTuple Values;
...
Values.Reset()
3)编译环境更改:
Include路径设定变更
旧版
$HALCONROOT/include/cpp#define HCPP_LEGACY_API HTuple Values; ... Values.Reset() // better use Clear()新版 $HALCONROOT/include/halconcpp