本系列代码托管于:https://github.com/chintsan-code/opencv4-tutorials

本篇使用的项目为:convert_color_space

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, const char** argv) {
	Mat src = imread("../sample/lena512color.bmp");
	if (src.empty())
	{
		cout << "could not load image..." << endl;
		return -1;
	}
	imshow("src", src);
	Mat gray, hsv;
	cvtColor(src, gray, COLOR_BGR2GRAY);
	cvtColor(src, hsv, COLOR_BGR2HSV);
	imshow("gray", gray);
	imshow("hsv", hsv);
	imwrite("gray.bmp", gray);
	imwrite("hsv.bmp", hsv);

	waitKey(0);
	destroyAllWindows();
	return 0;
}

cvtColor:将一张图像从一个彩色色彩空间转换到另一个

void cv::cvtColor( cv::InputArray src, cv::OutputArray dst, int code, int dstCn = 0 );
  • src:输入图像
  • dst:输出图像,与src保持相同的size和depth
  • code:色彩空间转换代码,常见的有:
    • COLOR_BGR2GRAY: 彩色转到灰度
    • COLOR_GRAY2BGR:灰度转到彩色
    • COLOR_BGR2HSV:BGR转到HSV
    • COLOR_HSV2BGR:HSV转到BGR
    • COLOR_BGR2RGB:BRG转到RGB
    • COLOR_RGB2BGR:RGB转到BRG
    • ……
  • dstCn:dst的通道数,如果为0则表示与src一致

imwrite:保存一张图像到指定文件

bool cv::imwrite( const cv::String& filename, cv::InputArray img,
              const std::vector<int>& params = std::vector<int>());
  • filename:指定文件的文件名,必须加上后缀,因为保存的文件格式是有该后缀决定的
  • img:要保存的图像对象
  • params:指定保存格式参数,参见cv::ImwriteFlags
  • 返回值:保存成功返回true,失败返回false