OpenCV中的基本数据结构

最近在静下心来梳理一份视觉代码,把当初直接用上但是却没仔细咀嚼的东西拿出来整理一下。其实静下心来做些事情真的不容易,时常被各种杂事打断,Anyway,想办法保持短时间专注还是必要的。

1. Point

Point数据结构表示二维图像中的点,由图像坐标x和y组成。用法:
Point myPoint;
myPoint.x = 100;
myPoint.y = 50;

或者
Point myPoint(100, 50);

2. Scalar

Scalar()表示4个元素的数组,在OpenCV中用来表示颜色值,注意,OpenCV存储RGB模式采图的通道顺序是B、G、R。
根据需要,4个参数不一定都要填入,例如,表示单通道像素时,可以使用Scalar(255)等;表示RGB三通道图像像素时,可传入BGR的值: Scalar(255,200,150)。

3. Size

常用的Size(w,h)表示图像区域的宽和高。

4. Rect

Rect用来表示一个矩形,成员有x、y、width、height,分别表示矩形左上角的xy坐标和宽高。
成员函数及其用法:
Rect myRect(0,0,200,100);
myRect.area()    //矩形的面积, 200x100 = 20000
myRect.size()     //矩形的尺寸, 200x100
myRect.tl()   //左上角像素坐标0,0
myRect.br()   //右下角像素坐标200,100
Rect rect1, rect2, rect3;
rect3 = rect1 & rect2;   //求两个矩形的交集
rect3 = rect1 | rect2;   //求两个矩形的并集

rect2 = rect1 + Point(100, 40);  //平移操作,左上角定点坐标变为(x+100,y+40)
rect2 = rect1 + Size(-50, 100);   //缩放操作,左上角顶点位置不变,宽度-50,高度+100

5. cvtColor()

颜色空间转换函数,可实现RGB与灰度图、HSV、HSI等颜色空间的转换。
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0);
src为输入图像,dst为输出图像,code为颜色空间转换标识符,dstCn为目标图像的通道数,默认为0,表示目标图像与原图像通道数相同。例如,将源图像由BGR转换为HSV:
cvtColor(srcImg, dstImg, CV_BGR2HSV);   //不同版本的code有可能不用,在OpenCV3中,该code为COLOR_BGR2HSV

发布了57 篇原创文章 · 获赞 58 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/DeliaPu/article/details/97787091