Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++를 사용하여 OpenCV에서 색상 공간을 변환하는 방법은 무엇입니까?

<시간/>

색 공간은 색을 표현하는 모델입니다. 색상을 설명하는 다양한 방법이 있습니다. 예:RGB, CYMK, HSV, 그레이스케일 등

여기서는 'imgproc.hpp'라는 새 헤더를 사용했습니다. 'imgproc.hpp' 이미지 프로세싱의 약자입니다. 색 공간을 변환하려면 'cvtColor()'를 사용해야 합니다. OpenCV의 기능 이 함수는 'imgproc'에 정의되어 있습니다. 헤더 파일. 그래서 'imgproc.hpp'를 포함했습니다.

먼저 두 개의 행렬과 두 개의 창을 선언했습니다. 이미지를 로드하고 표시하기 위한 것입니다. 그런 다음 'cat.jpg'라는 이미지를 'myImage'에 로드했습니다. 행렬. 그 후 'cvtColor(myImage, myImage_Converted, COLOR_RGB2GRAY)'를 사용했습니다. 이 라인은 'myImage'의 RGB 색 공간을 Grayscale로 변환하여 'myImage_Converted' 행렬에 저장합니다.

'cvtColor()의 원시 형식 기능은 -

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

이 프로그램에서 소스 행렬은 '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;//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;
}

출력

C++를 사용하여 OpenCV에서 색상 공간을 변환하는 방법은 무엇입니까?