08_OpenCV中的色彩空间转换

08_OpenCV中的色彩空间转换

色彩空间是一种使用一组颜色成分表示颜色的抽象数学模型,如RGB,HSI等。OpenCV提供了cvtColor函数来将一个图像由一种色彩空间表示转换成另一种色彩空间表示。

1. 相关API介绍:

CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn=0 );
  • src是源图像,可以是8位无符号或16位无符号数或单精度浮点数
  • dst是输出图像,与src具有相同大小和深度
  • code是色彩空间转换类型,常用参数有COLOR_BGR2GRAY = 6彩色到灰度,COLOR_GRAY2BGR = 8灰度到彩色,COLOR_BGR2HSV = 40BGR到HSV,COLOR_HSV2BGR = 54HSV到 BGR,更加详细的色彩空间转换类型可以见:cv::ColorConversionCodes

该函数可以将输入图像从一种颜色空间转换为另一种颜色空间。在从RGB颜色空间转换的情况下,应明确指定通道的顺序(RGB或BGR)。

这里要注意的是OpenCV中的默认颜色格式通常称为RGB,但实际上是BGR(字节是相反的)。因此,标准(24位)彩色图像中的第一个字节将是8位蓝色分量,第二个字节将是绿色分量,第三个字节是红色分量。第四,第五和第六个字节将是第二个像素(蓝色,然后是绿色,然后是红色),依此类推。

2.代码实践

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

using namespace std;
using namespace cv;

int main(int argc, char**argv)
{
    
    
	Mat input = imread("test_images/opencv.jpg",1);
	namedWindow("input", CV_WINDOW_NORMAL);
	imshow("input", input);

	Mat gray, hsv;
	cvtColor(input, gray, COLOR_BGR2GRAY);
	cvtColor(input, hsv, COLOR_BGR2HSV);

	imshow("gray", gray);
	imshow("hsv", hsv);

	waitKey(0);
	return 0;
}

3.运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/PecoHe/article/details/102514616