OpenCV的基本数据类型详解

OpenCV提供了多种基本数据类型,在这些数据类型中最简单的就是CvPoint。

CvPoint是一个包含integer类型成员x和y的简单结构体。

CvPoint有两个变体类型:CvPoint2D32fCvPoint3D32f。前者同样有两个成员x,y,但它们是浮点类型;而后者却多了一个浮点类型的成员z。

CvSize类型与CvPoint非常相似,但它的数据成员是integer类型的width和height。如果希望使用浮点类型,则选用CvSize的变体类型CvSize2D32f

CvRect类型派生于CvPoint和CvSize,它包含4个数据成员:x,y,width和height。(该类型是一个复合类型)。

还有一个重要的类型是包含4个整型成员的CvScalar类型,当内存不是问题时,CvScalar经常用来代替1,2或者3个实数成员(在这个情况下,不需要的分量被忽略)。CvScalar有一个单独的成员val,它是一个指向4个双精度浮点数数组的指针。

所有这些数据类型具有以其名称来定义的构造函数,例如cvSize()。(构造函数通常具有与结构类型一样的名称,只是首字母不大写)。记住,这是C而不是C++,所以这些构造函数只是内联函数,它们首先提取参数列表,然后返回被赋予相关值的结构。        

各数据类型的内联构造函数被列在下表中:cvPoint(),cvSize(),cvRect()和cvScalar()。这些结构都十分有用,因为它们不仅使代码更容易编写,而且也更易于阅读。假设要在(5,10)和(20,30)之间画一个白色矩形,只需简单调用:

cvRectangle{
    myImg;
    cvPoint(5,10);
    cvPoint(20,30);
    cvScalar(255,255,255);
}

表3-1:points, size, rectangles和calar三元组的结构

结构

成员

意义

CvPoint

int x, y

图像中的点

CvPoint2D32f

float x, y

二维空间中的点

CvPoint3D32f

float x, y, z

三维空间中的点

CvSize

int width, height

图像的尺寸

CvRect

int x, y, width, height

图像的部分区域

CvScalar

double val[4]

RGBA 值

 

cvScalar是一个特殊的例子:它有3个构造函数。第一个是cvScalar(),它需要一个、两个、三个或者四个参数并将这些参数传递给数组val[]中的相应元素。第二个构造函数是cvRealScalar(),它需要一个参数,它被传递给给val[0],而val[]数组别的值被赋为0。最后一个有所变化的是cvScalarAll(),它需要一个参数并且val[]中的4个元素都会设置为这个参数。

个人认为好的结合代码详解数据类型的参考:

https://blog.csdn.net/maweifei/article/details/51227253

https://www.cnblogs.com/guoqiaojin/p/3176692.html

https://www.cnblogs.com/Anita9002/p/3904367.html

https://blog.csdn.net/gdut2015go/article/details/46301821

革命尚未成功,同志仍需努力。

你可能感兴趣的:(#,OpenCV,OpenCV,基本数据类型,CvPoint,CvSize,CvRect)