如何使用 C++ 在 OpenCV 中转换颜色空间?

opencvc++server side programmingprogramming更新于 2025/5/14 17:52:17

颜色空间是表示颜色的模型。描述颜色的方式有很多种。例如,RGB、CYMK、HSV、灰度等。

在这里,我们使用了一个名为 'imgproc.hpp' 的新标头。 'imgproc.hpp' 是图像处理的缩写。要转换颜色空间,我们需要使用 OpenCV 的 'cvtColor()' 函数。此函数在 'imgproc' 头文件中定义。这就是我们包含 'imgproc.hpp' 的原因。

首先,我们声明了两个矩阵和两个窗口。这些用于加载和显示图像。然后我们将名为 'cat.jpg' 的图像加载到 'myImage' 矩阵中。之后我们使用 'cvtColor(myImage, myImage_Converted, COLOR_RGB2GRAY)'。这一行将 'myImage' 的 RGB 颜色空间转换为灰度并将其存储在 'myImage_Converted' 中矩阵。

'cvtColor() 函数的原始形式是 −

cvtColor(源矩阵,目标矩阵,颜色空间转换代码)

在此程序中,源矩阵为 'myImage',目标矩阵为 'myImage_Converted',颜色空间转换代码为 COLOR_RGB2GRAY。

以下程序在 OpenCV 中将 RGB 图像转换为灰度图像。

示例

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main(int argc, const char** argv) {
   Mat myImage;//声明一个矩阵来加载图像//
   Mat myImage_Converted;//声明一个矩阵来存储转换后的图像//  
   namedWindow("Actual_Image");//声明窗口来显示实际图像//
   namedWindow("Converted_Image");//声明窗口来显示转换后的图像//
   myImage = imread("cat.jpg");//在 myImage 矩阵中加载图像//
   cvtColor(myImage,myImage_Converted, COLOR_RGB2GRAY);//将 RGB 转换为灰度//
   imshow("Actual_Image",myImage);//显示实际图像//
   imshow("Converted_Image",myImage_Converted);//显示转换后的图像//  
   waitKey(0);//等待按键
   destroyAllWindows();//关闭所有窗口
   return 0;
}

输出


相关文章