1、点的表示:Point类
Point类数据结构表示了二维坐标系下的点,既由其图像坐标x和y指定的2D点:
Point point;
point.x = 10;
point.y = 8;
或者:
Point point = point(10,8);
OpenCV中的定义:
typedef Point_<int> Point2i;
typedef Point2i Point;
typedef Point_<float> Point2f;
2、颜色表示:Scalar类
Scalar()表示具有4个元素的数组,在OpenCV中被大量用于传递像素值,如RGB颜色值。而RGB颜色值为三个参数,其实对于Scalar函数来说,如果用不到第四个参数则不需要写出来;若只写三个参数,OpenCV会认为我们就想表示三个参数。
例如:给出以下颜色参数表达式:Scalar(a,b,c); 那么定义的RGB颜色值:红色分量为c,绿色分量为b,蓝色分量为a。
Scalar类的源头为Scalar_类,而Scalar_类是Vec4x的一个变种,我们常用的Scalar其实就是Scalar_<double>。这就是为什么很多函数的参数输入可以是Mat,也可以是Scalar。
3、尺寸的表示:Size类
OpenCV中对Size类的定义:
typedef Size_<int> Size2i;
typedef Size2i Size;
Size类的使用; Size(5,5); 或者:XXX.width XXX.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 rectScale = rect+size;
5、颜色空间转换:cvtColor()函数
cvtColor()可以实现RGB向HSV、HSI等颜色空间的转换,也可以转换为灰度图像。
void cvtColor (InputArray src, OutputArray dst, int code, int dstCn =0) 第三个参数code为颜色空间转换的标识符,第四个参数为目标函数的通道数,若该参数为0,表示目标图像取原图像的通道数。下面列举的是code的值:
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
void main(){
Mat srcImage = imread("lena.jpg",1), dstImage;
imshow("原图",srcImage);
cvtColor(srcImage,dstImage,CV_BGR2Lab);
imshow("效果图",dstImage);
waitKey(0);
}