Halcon Opencv 数据的不同

1、基本数据类型

halcon 只具备 两种数据类型 HTuple (tuple) 、HObject (object)。

对于基本数据的处理应用 HTuple 类型存储与计算。数组、字符串、数字、均可使用。

对于图形数据,多通道图、单通道图、二值化图均需使用 HObject 的类型。字母 H 是 halcon 在 c++ 中的嵌入类型前缀。

opencv 具备多种类型,Point,Mat,  Point2f, Vec4i, Vec3b等等。但均是基本数据的多种组合体现。

图像数据就是像素点的集合,常用Mat类型存储。数据分为头部、数据部。进行数据拷贝时,请考虑头部信息、数据信息的拷贝,即为深拷贝、浅拷贝。

2、操作形式

在这里操作形式,只说明图像数据的操作。

halcon 对于 图像的处理的基本数据 应称作 region。而opencv的图形处理基本数据 是 Point。

region 应该怎么理解。

借用 opencv 来理解会更好的理解。region 可以理解为点的集合形成的连通域。

图解如下

Halcon Opencv 数据的不同_第1张图片

以函数用法解释,对于两区域相交,求相交面积中心点

对于halcon而言,

Intersection(region1,region2,result);

AreaCenter(result,area,row,col);

只具备点这个概念,但不具备点这个形式。

对于opencv而言,

Mat c = mata.mul(matb);

connectedComponentsWithStats(img, labels, stats, centroids); //亦可以通过轮廓来确定。

不仅具备点这个概念,同样具备点这个形式,并且基础的数据形式为点。

region是不可以直接访问像素点数据的,所以region就已经是一个基本数据了。

Mat 是可以再往下访问的,是可以直接访问像素点数据的。可以通过直接像素点数据,进行数据的修改的。但 region 是不允许直接修改的,需要先拆分出数据地址,然后根据地址找到数据。

所以在操作时,请注意操作基础。主要区别是数据的操作基础,对于问题的解决方法上并没有不同,都是一种图形处理工具,主要看怎么用。

3、数据存储

对于数据存储,是具备共通性的。Mat 具备头部与数据部分,也就是图像配置信息与数据信息,同样在Object中存在。

数据的存储方式,基本都是 地址加长度 。unsigned char _char; _char 申请数据内存地址,unsigned char 提供数据占用长度。对于指针,也就是在内存中不是直接存储的数据,而是存储的指向直接保存数据的地址,根据这个地址跳转到数据存储地址。对于强类型语言均适用。

 

你可能感兴趣的:(数据挖掘)