点point类、颜色scalar类、尺寸size类、矩形rect类、颜色空间转换

阅读更多

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_、Size2i、Size这三个类型是等价的。

OpenCV中常用的Size构造函数为:

  • Size_(_TP _width,  _Tp _height)

可以使用XXX.widthXXX.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()函数标识符如下表所示:

 


点point类、颜色scalar类、尺寸size类、矩形rect类、颜色空间转换_第1张图片
 【重点】: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();  //保持窗口显示
}

 

  • 点point类、颜色scalar类、尺寸size类、矩形rect类、颜色空间转换_第2张图片
  • 大小: 430.5 KB
  • 查看图片附件

你可能感兴趣的:(点point类、颜色scalar类、尺寸size类、矩形rect类、颜色空间转换)