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

C++를 사용하여 OpenCV에서 이미지를 다른 채널로 분할하는 방법은 무엇입니까?

<시간/>

RGB 이미지에는 빨강, 녹색 및 파랑의 세 가지 채널이 있습니다. 빨강, 초록, 파랑 ​​채널이 이미지를 나타내는 색 공간을 RGB 색 공간이라고 합니다. OpenCV에서는 RGB 대신 BGR 시퀀스가 ​​사용됩니다. 즉, 첫 번째 채널은 파란색, 두 번째 채널은 녹색, 세 번째 채널은 빨간색입니다. RGB 이미지를 다른 채널로 분할하려면 3개 채널의 행렬을 정의해야 합니다. 'Mat different_Channels[3]' 를 사용합니다. 3채널 매트릭스를 정의합니다.

다음으로 OpenCV 'split()' 함수를 사용하여 로드된 이미지를 분할합니다. 이 함수의 형식은 'split(Source Matrix, Destination Matrix)'입니다. 이 함수는 소스 행렬의 이미지를 채널 이미지로 분할하고 대상 행렬에 저장합니다. 이 라인은 운영 중입니다 – 'split(myImage, different_Channels);'

split 함수는 이미 파란색, 녹색 및 빨간색 채널을 'different_channels' 행렬에 로드했습니다. 다음 줄을 사용하여 다른 채널에 저장된 이미지를 새 매트릭스에 로드했습니다.

Mat b =different_Channels[0];//파란색 채널 로드//Mat g =different_Channels[1];//녹색 채널 로드//Mat r =different_Channels[2];//빨간색 채널 로드// 

그리고 마지막으로 다음 라인을 사용하여 각 채널을 다르게 보여주었습니다 -

imshow("파란색 채널",b);//파란색 채널 표시//imshow("녹색 채널",g);//녹색 채널 표시//imshow("빨간색 채널",r);//표시 레드 채널//

이것이 이미지를 채널로 분할하는 방법입니다.

다음 프로그램은 RGB 이미지를 파란색, 녹색 및 빨간색 채널로 분할합니다.

예시

#include#include
#include
네임스페이스 cv 사용;네임스페이스 std 사용;int main(int argc,const char** argv) { Mat myImage;//이미지를 로드할 행렬 선언// Mat different_Channels[3];//3개의 채널이 있는 행렬 선언// myImage=imread("RGB.png");//myImage 행렬에 이미지 로드 // split(myImage, different_Channels);//이미지를 3개의 다른 채널로 분할// Mat b =different_Channels[0];//파란색 채널 로드// Mat g =different_Channels[1];//녹색 채널 로드// Mat r =different_Channels[2];//빨간색 채널 로드// imshow("파란색 채널",b);//파란색 채널 표시// imshow("녹색 채널",g);//녹색 채널 표시// imshow( "빨간색 채널",r);//빨간색 채널 표시// imshow("Actual_Image", myImage);//실제 이미지 표시// waitKey(0);//키 입력 대기 destroyAllWindows();//모두 닫기 창 // 반환 0;}

출력

C++를 사용하여 OpenCV에서 이미지를 다른 채널로 분할하는 방법은 무엇입니까?