Halcon数据类型

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

猜你喜欢

转载自blog.csdn.net/qq_29187197/article/details/82750900