1. HDevelep下数据类型
(1)图形数据
image(图像),region(区域),xld(轮廓)
-
image
在halcon中,image=channel(像素)+domain(定义域)。domain:每张图像都有其定义域,代表图像中要处理的像素范围,像素存放于channel矩阵中。 -
region
用行程编码的方式存储,有广泛应用,特点是高效。 -
XLD
亚像素精度轮廓(XLD):图像均用像素点保存,像素点是整型不连续的,halcon中定义了下亚像素描述几何轮廓对象(一组排序后的浮点数控制点集合)。
(2)控制数据
integer(整型),real(实型),string(字符串),tuple(元组),handle(句柄)
- tuple
元组也可以近似的理解为数组,但是元组可以有几种不同类型的数据组成。
array:=[1,2,'a',3,4]
2. vc++下数据类型
(1)图形数据
Hobject:把图像数据封装成类的一种形式,包含hdevelep下的image、region、Xld。
- 判断数据是否为空和清空数据
HObject image;
image.Clear(); //清空数据
if (image.Key()==UNDEF_KEY) //判断图形数据是否为空
{
//如果为空执行这语句
}
(2)控制数据
HTuple,Hlong(整型数据的另一种形式),包含hdevelep下的所有控制数据。
- 数组赋值
//数组赋值
HTuple array;
array.Clear();//清空元组数据
array[0]=0;
array[1]=1;
array[2]=2;
array[3]=3;
array[4]=4;
array[5]=5;
HTuple array1;
array1[0]=10;
array1[1]=11;
array1[2]=12;
array1[3]=13;
- 数组基本操作算子
//数组基本操作算子
TupleConcat(array,array1,&array); //将两个数组连接
HTuple length;
TupleLength(array,&length); //得到数组长度
HTuple selected,i=6;
TupleSelect(array,i,&selected); //选取数组中第i个元素
TupleRemove(array,i,&array); //移除数组中第i个元素
- vc++数据类型与halcon数据类型转换
halconInt=20;
halconDouble=13.14;
halconString="liu zhi";
//halcon类型转换为vc++类型
vcInt=halconInt[0].I();
vcDouble=halconDouble[0].D();
vcString=halconString[0].S();
//vc++转换为halcon类型
halconInt.Clear();
halconDouble.Clear();
halconString.Clear();
halconInt=(HTuple)vcInt;
halconDouble=(HTuple)vcDouble;
//halconString=(HTuple)vcString;
- 判断数据是否为空和清空数据
//判断数组是否为空,清空数组
array.TupleLength(); //为0数组为空,大于0不为空
array.Clear(); //清空数组元素
- tuple_xxxx 算子
不管是vc++还是hedevedlop中,经常会用到tuple_xxxx 算子对tuple数据进行运算和操作。可以查看halcon算子函数整理。
3. 易错难点
(1)halcon数据类型在hdevelop与vc++中变量定义区别
- 在hedevdlop中一般不需要定义变量,会根据算子自动转换成相应的数据类型。
- vc++定义变量有两种类型,图形数据Hobject,控制数据HTuple