더북(TheBook)

프로그램 동작 중 그레이스케일 영상을 저장할 새로운 Mat 객체를 생성하려면 CV_8UC1 타입의 객체를 생성해야 합니다. 예를 들어 다음 소스 코드는 모든 픽셀 값이 0으로 초기화된 640×480 그레이스케일 영상을 생성합니다.

Mat img2(480, 640, CV_8UC1, Scalar(0));

만약 이미 3채널 컬러 영상을 가지고 있고, 이 영상을 그레이스케일 영상으로 변환하려면 cvtColor() 함수를 사용합니다. 다음 코드는 3채널 컬러 영상을 1채널 그레이스케일 영상으로 변환하는 코드입니다.

Mat img3 = imread("lenna.bmp", IMREAD_COLOR);
Mat img4;
cvtColor(img3, img4, COLOR_BGR2GRAY);

이 예제 코드에서 img3 변수에는 3채널 BGR 컬러 형식의 레나 영상이 저장됩니다. 여기서 BGR이라는 것은 색상 채널 순서가 파란색(Blue), 녹색(Green), 빨간색(Red) 순서로 설정되어 있음을 의미합니다. cvtColor() 함수는 Mat 객체에 저장된 색상 정보를 변경할 때 사용하는 함수이며, cvtColor() 함수에 전달하는 인자는 차례대로 입력 영상, 출력 영상, 컬러 변환 코드입니다.1 앞 소스 코드에서 사용한 컬러 변환 코드 COLOR_BGR2GRAY는 BGR 3채널 컬러 영상을 1채널 그레이스케일 영상으로 변환할 때 사용합니다. 그러므로 3채널 컬러 영상 img3을 그레이스케일 영상으로 변환하여 img4에 저장됩니다.

지금까지 그레이스케일 형태의 Mat 객체를 생성하는 세 가지 방법을 알아보았습니다. 앞으로 그레이스케일 영상을 많이 다루게 되는 만큼 이 방법들을 잘 기억하기 바랍니다.

 

1 cvtColor() 함수에 대해서는 10.1.2절에서 자세히 설명합니다.

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