더북(TheBook)

10.1.3 색상 채널 나누기

imread() 함수로부터 생성된 컬러 영상은 하나의 픽셀이 파란색(B), 녹색(G), 빨간색(R) 세 개의 색상 정보를 가지고 있습니다. 그래서 OpenCV에서 컬러 영상은 보통 uchar 자료형을 사용하고 세 개의 채널을 갖는 Mat 객체로 표현합니다. 그런데 컬러 영상을 다루다 보면 빨간색 성분만을 이용하거나 HSV 색 공간으로 변환한 후 H 성분만을 이용하는 경우가 종종 발생합니다. 이러한 경우에는 3채널 Mat 객체를 1채널 Mat 객체 세 개로 분리해서 다루는 것이 효율적입니다.

OpenCV에서 다채널 행렬을 1채널 행렬 여러 개로 변환할 때에는 split() 함수를 사용합니다. split() 함수 원형은 다음과 같습니다.

void split(const Mat& src, Mat* mvbegin);
void split(InputArray src, OutputArrayOfArrays mv);

src

입력 다채널 행렬

mvbegin

분리된 1채널 행렬을 저장할 Mat 배열 주소. 영상 배열 개수는 src 영상 채널 수와 같아야 합니다.

mv

분리된 1채널 행렬을 저장할 벡터

 

split() 함수의 입력 src는 여러 개의 채널로 구성된 다채널 행렬입니다. 그리고 1채널 행렬로 분할된 결과는 Mat 자료형의 배열 또는 vector<Mat> 형식의 변수로 받을 수 있습니다. Mat 자료형 배열을 사용할 경우에는 배열의 크기가 입력 영상의 채널 수보다 같거나 커야 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.