您的位置:首页 > 运维架构

opencv 中常用的数据类型

2017-08-18 11:14 169 查看
1.点的表示:Point类

Point类数据结构表示了二维坐标系下的点,有数据成员x,y。

用法;

Point p;

p.x = 1, p.y = 2;

或者:

Point p = Point(1, 2);

另外,在定义中Point_<int>、Point2i和Point相互等价

Point_<float>和Point2f相互等价

2.颜色的表示:Scalar类

Scalar()表示具有四个元素的数组,在opencv中通常用于传递与设置像素值,如RGB的颜色值。而RGB的颜色值为三个参数(三通道),对与Scalar函数来说,第四个参数可以忽略不写出。

例:

Scalar(a, b, c);//定义的RGB颜色值中红色分量为a,绿色分量为b,蓝色分量为a;
Scalar类的源头为Scalar_类,而Scalar_类是Vec4x的一个变种,常用的Scalar就是Scalar_<double>。故函数参数的输入可以是Mat也可以使Scalar。

3.尺寸表示类:Size类

在Size类相关源码中将Size_<int> 的别名定为Size和Size2i。

Size_的构造函数为:

Size_(_Tp _width, _Tp _height);  

    Size_(const Size_& sz);  

    Size_(const CvSize& sz);  

    Size_(const CvSize2D32f& sz);  

    Size_(const Point_<_Tp>& pt);
 

常用到的就是:Size_(_Tp _width, _Tp _height); 

另外在该类中还定义了公共数据成员width、height,可直接调用。

4.矩形表示类:Rect类

Rect类的成员变量有x、y、width、height,分别为左上角点的坐标和矩形的长和高。

常用的成员函数有:

Size()——返回值为对应的Size对象

area()——返回矩形的面积

contains(Point)——判断点是否在矩形里

inside(Rect)——判断矩形是否在该矩形里

tl()——返回左上角点的坐标

br()——返回右下角的坐标

求两矩形交集:

Rect rect = rect1 & rect2;

求两矩形并集:

Rect rect = rect1 | rect2;

矩形平移:

Rect rectShift = rect + point;

矩形缩放:

Rect rect = rect1 + size;

5.Matx 是个轻量级的Mat,必须在使用前确定其尺寸,比如一个2*3的float型Matx,可以声明为:Matx23f;

6.Vec是opencv中的一个向量类

Vec<int, n> 就是一个向量类,可以用来定义向量对象等。

第一个参数int标识Vec中储存的为int类型向量

第二个参数n为一个整形数值,表示每个Vec对象中储存的是n个int值,即为n维向量。

7.Rang类

Range类通常用于确定图片的一块范围,类的源代码:

class Range  

{  

public:  

...  

int start, end;  

};  

应用:

截取原图的指定位置大小的区域

roi_img = src_img(Range(0,100),Range(50,200));

这里截取的就是原图第0行至第99行,第50列至199列的区域图像.

这里要注意的就是Range的两个参数范围分别为左包含右不包含
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: