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


颜色空间是表示颜色的模型。描述颜色有不同的方法。例如,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(Source Matrix, Destination Matrix, Color Space Conversion Code)

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

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

示例

#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;//declaring a matrix to load the image//
   Mat myImage_Converted;//declaring a matrix to store the converted image//  
   namedWindow("Actual_Image");//declaring window to show actual image//
   namedWindow("Converted_Image");//declaring window to show converted image//
   myImage = imread("cat.jpg");//loading the image in myImage matrix//
   cvtColor(myImage,myImage_Converted, COLOR_RGB2GRAY);//converting RGB to Grayscale//
   imshow("Actual_Image",myImage);//showing Actual Image//
   imshow("Converted_Image",myImage_Converted);//showing Converted Image//  
   waitKey(0);//wait for key stroke
   destroyAllWindows();//closing all windows
   return 0;
}

输出

更新于: 2021年3月10日

2K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告