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_BGR2GRAY、CV_BRG2HSV、CV_BGR2Lab
OpenCV3: COLOR_BGR2GRAY、COLOR_BRG2HSV、COLOR_BGR2Lab
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号