cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致。
void cv::cvtColor(cv::InputArray src, // 输入序列cv::OutputArray dst, // 输出序列int code, // 颜色映射码int dstCn = 0 // 输出的通道数 (0='automatic'));
参数解释:
. InputArray src: 输入图像即要进行颜色空间变换的原图像,可以是Mat类
. OutputArray dst: 输出图像即进行颜色空间变换后存储图像,也可以Mat类
. int code: 转换的代码或标识,即在此确定将什么制式的图片转换成什么制式的图片,
. int dstCn = 0: 目标图像通道数,如果取值为0,则由src和code决定
#include <iostream>#include <opencv2/core.hpp>#include <opencv2/highgui.hpp>#include <opencv2/imgproc.hpp>using namespace std;using namespace cv;int main(){Mat srcImage = imread("星空.png");//判断图像是否加载成功if(!srcImage.data){cout << "图像加载失败!" << endl;return false;}elsecout << "图像加载成功!" << endl << endl;//显示原图像namedWindow("原图像",WINDOW_AUTOSIZE);imshow("原图像",srcImage);//将图像转换为灰度图,采用CV_前缀Mat grayImage;cvtColor(srcImage, grayImage, CV_BGR2GRAY); //将图像转换为灰度图namedWindow("灰度图",WINDOW_AUTOSIZE);imshow("灰度图",grayImage);//将图像转换为HSV,采用COLOR_前缀Mat HSVImage;cvtColor(srcImage, HSVImage, COLOR_BGR2HSV); //将图像转换为HSV图namedWindow("HSV",WINDOW_AUTOSIZE);imshow("HSV",HSVImage);waitKey(0);return 0;}[点击并拖拽以移动]