OpenCV Mat类与颜色空间

Mat类与颜色空间

OpenCV常用数据结构

Point类

Point类数据结构表示二位坐标系的点,由x,y指定的2D点。

//eg
Point p;
p.x=20,p.y=30;

Rect类

Rect类表示矩形,成员有x,y,width,height,常用的成员函数:

Size()返回值Size表示大小

area()返回矩形面积

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

Inside(Rect)判断矩形是否在该矩形内

tl返回左上坐标

br返回右下坐标

//求两个矩形的交集并集
Rect rect = rect1 & rect2;
Rect rect = rect1 | rect2;

Size类

Size类表示区域大小,常用构造函数Size(int _width, int _height);

Scalar类

Scalar()表示有4个元素的数组,大量用来传递像素值,如RGB颜色。一般形式为Scalar(double B,double G,double R,double Alpha).Alpha表示透明度。Scalar(255,0,0)表示蓝。

Mat类基础

基础图象容器Mat。Mat类由两个数据部分组成,矩阵头(大小,通道,数据类型等)和数据块(像素值)。

Mat头部属性比如rows,cols,channels,data。data为指向数据块的指针。

Mat类创建

//Mat类创建
Mat img;//创建无初始化矩阵
Mat img1(20,10,CV_8UC1);//创建20行10列(10*20)类型为8位的单通道矩阵。
Mat img2(Size(20,10),CV_8UC3);//创建大小为20*10类型为8位的3通道矩阵。
Mat img3(20,10,CV_8UC1,Scalar(0,255,0));//创建大小为10*20的8位单通道矩阵。
Mat img4(20,10,CV_8UC1,Scalar(255));//创建大小为10*20的8位单通道矩阵。
Mat img5(img4);//将img4赋值给img5,共享数据对象。img4改变img5也会改变。

Mat类赋值拷贝

//Mat类赋值拷贝
Mat img(20,10,CV_8UC1,Scalar(0,255,0));
//img3和img2跟原图像指向同一数据块。
Mat img2(img);
Mat img3 = img;
//img4和img5是原图的副本。
Mat img4 = img.clone();
Mat img5;
img.copyTo(img5);

常用颜色空间

RGB颜色空间、HSV/HLS颜色空间、Lab颜色空间。

HSV主要做颜色检测,避免亮度干扰。H色表[0,360],S饱和度[0,1],V亮度[0,1]。

Lab主要做亮度检测,L亮度[0,100],a、b都表示颜色[127,-128]。

转换函数cvtColor(src, dst, code).

OpenCV2: CV_BGR2GRAYCV_BRG2HSVCV_BGR2Lab

OpenCV3: COLOR_BGR2GRAYCOLOR_BRG2HSVCOLOR_BGR2Lab

posted @ 2021-01-30 20:13  Eunice呀  阅读(536)  评论(0)    收藏  举报