颜色空间的转换
一、颜色空间简介
常用的颜色系统有RGB、HSV、HLS、Lab、XYZ、YUV等。这之中有些把颜色分成色调、饱和度和亮度。而RGB三原色的色彩系统模式是是通过对红( R )、绿(G)、蓝(B)三原色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,通过这三种颜色通道的变化几乎可以得到人类目前能感知到的所有颜色,也是目前运用最广的颜色系统之一。
二、函数说明
cvtColor()函数是OpenCV里的颜色转换函数,可以实现各种颜色空间的转换。
那我们先看下看一下cvtColor函数定义:
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)
其中 src: 输入图像;dst: 输出图像;code: 颜色空间转换标识符;
dstCn: 目标图像的通道数(参数为0时,目标图像和源图像的通道数一致);
***注意:***在opencv2版本时颜色空间转换的宏定义是CV_前缀开头,而在opencv3版以后的其颜色空间转换宏定义更改为COLOR_开头,不过小僧发现OpenCV2.4.10版本的两者都行,其他版本暂时不知。
三、六种颜色空间的转换
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 设置变量
Mat rgb, gray, hsv, lab , xyz, yuv;
// 检查读取是否读取成功
rgb = imread("1.jpg");
if (rgb.empty())
{
cout << "输入图像有错!" << endl;
return -1;
}
//显示RGB原图
namedWindow("RGB图",WINDOW_NO