机器视觉算法(第6期)----OpenCV中的基础数据类型

2019-05-22 00:10:55 浏览数 (1)

上期我们一起学习了常用的图像处理库相关的知识 机器视觉算法(第5期)----常用图像处理库都有哪些? 今后我们逐步深入,以开源库OpenCV图像处理库为工具,来逐步学习视觉方面的算法。工欲善其事,必先利其器,所以近几期,我们将一起系统的学习下OpenCV这个常用的开源图像处理库。首先这期我们主要介绍下OpenCV中常见的8大基础数据类型及其支持的操作。

1. Point类

作为OpenCV的基本类型,Point类可能是最简单的,虽然比较简单,但是熟悉opencv的你,并不一定对它很了解,特别是它的一些操作。 该类是基于一个基础模板结构而创建的,所以它能成为任何类型的点,比如整型,浮点型等。直接受Point类支持的操作如下:

2. Scalar类

Scalar是四维点类,与其他类型类似,它实际上与一个模板类相关,但访问它的别名返回一个该模板的实例。模板中,所有成员都是双精度浮点型数据。在计算机视觉算法中,Scalar类有一些与四元向量相关的特殊成员函数,下表列举了一些Scalar支持的操作:

3. size类

size类在实际操作中和Point类相似,而且可以与Point类互相转换,两者的主要区别是Point类的数据成员是x和y,而size类的数据成员是width和height。size类有三个别名,分别是Size,Size2i,Size2f,前面两个是等价的,表示整数大小,最后一个表示32位浮点大小。下表列出了size类支持的操作:

4. Rect类

Rect类包含Point类的成员x和y(代表矩形的左上角顶点)以及size类的成员width和heigth(代表矩形的宽和长)。下表是列出了Rect类所支持的操作:

另外Rect类还支持一系列的重载操作符,可用于计算两个矩形或者一个矩形等的各种各样的几何特性,如下:

5. RotatedRect类

RotatedRect类是一个包含一个中心点Point2f,一个大小Size2f和一个额外的float角度的容器。其中float的角度代表图形绕中心点旋转的角度。RotatedRect和Rect中有一个非常重要的不同点就是RotatedRect是以中心为原点,而Rect是以左上角为原点,下表列出了RotatedRect类所支持的操作:

6. 固定矩阵类

固定矩阵类是为编译时就已知维度的矩阵打造的,这也是称之为“固定”的原因。由于它内部的所有数据都是在堆栈上分配的,所以它们的分配和清除都很快。对固定类的操作运行很快,而且还在小矩阵上做过特殊的优化。通常,固定矩阵类实际上是一个模板,这个模板称为Matx<>,但独立的矩阵通常通过别名分配,这些别名的基础格式为Matx{1,2,...}{1,2,...}{f,d},其中数字可以是1到6之间的任何数。 其支持的操作有:

7. 固定向量类

固定向量类其实是从固定矩阵类派生而来的。固定向量类Vec其实就是一个列为1的固定矩阵类。为特定实例而准备好的别名格式如下: Vec{2,3,4,5,6}{b,s,w,I,f,d}, 最后一个字符的意义跟前面一样,其中w代表unsigned short,下表表示Vec支持的操作:

8. 复数类

OpenCV中的复数类和STL中的复数类模板complex<>不一样,但是可以互相转换。最大的区别在于成员的获取方式,STL类中的实部和虚部的获取方式通过成员函数real()和imag()获取,而在OpenCV中直接通过成员变量re和im获取。支持的操作如下:

和很多基本类型一样,复数类为重要的模板取了别名,如Complexf何Complexd分别表示单精度和双精度复数的别名。

0 人点赞