常用的Opencv的数据类型

来源:互联网 发布:政府网络舆情监控 编辑:程序博客网 时间:2024/06/05 15:24


        CvPoint,一个包含integer类型成员x和y的简单结构体。两个变体类型:CvPoint2D32f和CvPoint3D32f,其中2D和3D表示2维和3维,以及f表示浮点就不用多说了。

        CvSize类型与CvPoint非常相似,但它的数据成员是integer类型的width和height,即引用的时候是.width而不是.x了。CvSize的变体只有一个CvSize2D32f。

        CvRect类型派生于CvPoint和CvSize,它包含4个数据成员:x,y,width和height。

        CvScalar是一个包含四个元素的结构体变量。

定义如下:

typedef struct CvScalar
{
    double val[4];
}
CvScalar;

CvScalar pt;

如果使用的图像是1通道的,则pt.val[0]中存储数据

如果使用的图像是3通道的,则pt.val[0],pt.val[1],pt.val[2]中存储数据

注意:(1)所有这些数据类型具有以其名称来定义的构造函数,例如cvSize()。(构造函数通常具有与结构类型一样的名称,只是首字母不大写)。

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

           (3)Point3_<>、Size_<>以及Rect_<>有重新定义,比如 :

typedef Point_<int> Point2i;
typedef Point2i Point;
typedef Point_<float> Point2f;
typedef Point_<double> Point2d;


typedef Point3_<int> Point3i;
typedef Point3_<float> Point3f;
typedef Point3_<double> Point3d;


typedef Size_<int> Size2i;
typedef Size2i Size;
typedef Size_<float> Size2f;


typedef Rect_<int> Rect;

这样就可以直接用Point2f a(0.3f, 0.f), b(0.f, 0.4f);等来定义了。

此外还有图像和矩阵类型,这些都是比较常用并且非常有用的,后面我想做具体点的分析汇总后再写。




0 0
原创粉丝点击