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);
另外在该类中还定义了公共数据成员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类通常用于确定图片的一块范围,类的源代码:
截取原图的指定位置大小的区域
roi_img = src_img(Range(0,100),Range(50,200));
这里截取的就是原图第0行至第99行,第50列至199列的区域图像.
这里要注意的就是Range的两个参数范围分别为左包含和右不包含