1、点的表示:Point类
Point类数据结构表示了二维坐标系下的点,即由图像坐标x和y指定的2D点。用法如下:
Point point;
point.x = 10;
point.y = 8;
或者
Point point = Point(10, 8)
2、颜色的表示:Scalar类
Scalar()表示具有4个元素的数组,在OpenCV中用于传递像素值。
如下边颜色表达式,表示定义的RGB颜色值:红色分量为c,绿色分量为b,蓝色分量为a(OpenCV中颜色通道为BGR):
Scalar(a, b, c)
3、尺寸的表示:Size类
OpenCV中有如下定义:
- typedef Size_
Size2i; - typedef Size2i Size;
所以,Size_
OpenCV中常用的Size构造函数为:
- Size_
(_TP _width, _Tp _height)
可以使用XXX.width和XXX.height来分别表示宽度和高度。
Size(5,5) //构造出的Size宽度和高度都为5,即XXX.width和XXX.height都为5
4、矩形的表示:Rect类
Rect类的成员变量有x,y,width,height,分别为左上角点的坐标和矩形的宽和高。
常用的成员函数有:
- Size():返回值为Size
- area():返回矩形的面积
- contains(Points):判断点是否在矩形内
- inside(Rect):判断矩形是否在该矩形内
- tl:返回左上角点坐标
- br:返回右下角点坐标
求两个矩形的交集和并集:
Rect rect = rect1 & rect2;
Rect rect = rect1 | rect2;
矩形进行平移操作和缩放操作:
Rect rectShift = rect + point;
Rect rectScale = rect + size;
5、颜色空间转换:cvtColor()函数
cvtColor()函数是颜色空间转换函数,能够实现RGB颜色向HSV、HSI等颜色空间的转换,也可以转换为灰度图像。
格式如下:
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)
参数说明:
第一个参数:输入图像
第二个参数:输出图像
第三个参数:颜色空间转换标识符
第四个参数:目标图像的通道数,若该参数为0,表示目标图像取源图像的通道数。
下边是一个调用示例:
cvtColor(stcImage, dstImage, COLOR_GRAY2BGR)
cvtColor()函数标识符如下表所示:
【重点】:opencv默认的图片通道存储顺序是BGR,即蓝绿红,不是RGB。
下边代码shi关于cvtColor()函数的测试:
# include
# include
using namespace cv;
using namespace std;
void main(){
Mat srcImage = imread("1.jpg", 1); //载入图像
Mat dstImage_gray, dstImage_Lab, dstImage_HLS;
imshow("原始图", srcImage); //显示原始图
cvtColor(srcImage, dstImage_gray, COLOR_BGR2GRAY); //转换颜色空间
imshow("Gray效果图", dstImage_gray); //显示效果图
cvtColor(srcImage, dstImage_Lab, COLOR_BGR2Lab);
imshow("Lab效果图", dstImage_Lab);
cvtColor(srcImage, dstImage_HLS, COLOR_BGR2HSV);
imshow("HLS效果图", dstImage_HLS);
waitKey(); //保持窗口显示
}