Computer >> Máy Tính >  >> Lập trình >> C ++

Làm cách nào để chuyển đổi không gian màu trong OpenCV bằng C ++?

Không gian màu là mô hình đại diện cho các màu. Có nhiều cách khác nhau để mô tả màu sắc. Ví dụ:RGB, CYMK, HSV, Grayscale, v.v.

Ở đây, chúng tôi đã sử dụng một tiêu đề mới có tên là 'imgproc.hpp'. 'imgproc.hpp' này là từ viết tắt của Xử lý hình ảnh. Để chuyển đổi không gian màu, chúng ta cần sử dụng 'cvtColor ()' chức năng của OpenCV. Hàm này được định nghĩa trong 'imgproc' tập tin tiêu đề. Đó là lý do tại sao chúng tôi đã bao gồm 'imgproc.hpp'.

Đầu tiên, chúng tôi khai báo hai ma trận và hai cửa sổ. Đây là để tải và hiển thị hình ảnh. Sau đó, chúng tôi tải hình ảnh có tên 'cat.jpg' vào 'myImage' ma trận. Sau đó, chúng tôi sử dụng 'cvtColor (myImage, myImage_Converted, COLOR_RGB2GRAY)'. Dòng này chuyển đổi không gian màu RGB của 'myImage' thành Thang độ xám và lưu trữ nó trong ma trận 'myImage_Converted'.

Dạng thô của 'cvtColor () chức năng là -

cvtColor(Source Matrix, Destination Matrix, Color Space Conversion Code)

Trong chương trình này, ma trận nguồn là 'myImage', ma trận đích là 'myImage_Converted' và mã chuyển đổi không gian màu là COLOR_RGB2GRAY.

Chương trình sau đây chuyển đổi hình ảnh RGB sang hình ảnh Thang độ xám trong OpenCV.

Ví dụ

#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;
}

Đầu ra

Làm cách nào để chuyển đổi không gian màu trong OpenCV bằng C ++?