如何在 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+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.