더북(TheBook)

10.1.1 컬러 영상의 픽셀 값 참조

OpenCV에서 영상 파일을 불러와서 Mat 객체를 생성할 때에는 imread() 함수를 사용합니다. 이때 imread() 함수의 두 번째 인자를 IMREAD_COLOR로 설정하면 영상을 3채널 컬러 영상 형식으로 불러옵니다. 예를 들어 butterfly.jpg 나비 영상을 3채널 컬러 영상 형식으로 불러오려면 다음과 같이 코드를 작성합니다.

Mat img = imread("butterfly.jpg", IMREAD_COLOR);

일반적으로 컬러 영상은 흔히 RGB라고 부르는 빨간색(R), 녹색(G), 파란색(B) 색상 성분의 조합으로 픽셀 값을 표현합니다. 그러나 OpenCV의 컬러 영상은 기본적으로 RGB 색상 순서가 아니라 BGR 색상 순서로 픽셀 값을 표현합니다. 즉, imread() 함수로 영상을 3채널 컬러 영상 형식으로 불러오면 각 픽셀의 색상 값이 파란색(B), 녹색(G), 빨간색(R) 순서로 저장된 Mat 객체가 생성됩니다.

컬러 영상에서 각각의 R, G, B 색상 성분은 0부터 255 사이의 값을 가질 수 있습니다. 색상 성분 값이 0이면 해당 색상 성분이 전혀 없는 상태이고, 255이면 해당 색상 성분이 가득 차 있음을 의미합니다. OpenCV에서 각 색상 성분 값은 uchar 자료형을 사용하여 표현합니다. 그리고 컬러 영상에서 하나의 픽셀은 세 개의 색상 성분을 가지고 있으므로 컬러 영상의 한 픽셀을 정확하게 표현하려면 Vec3b 자료형을 이용해야 합니다. Vec3b 클래스는 크기가 3인 uchar 자료형 배열을 멤버 변수로 가지고 있는 클래스입니다. Vec3b 클래스의 바이트 크기는 정확하게 3바이트이며, 이는 실제 3채널 컬러 영상의 한 픽셀이 차지하는 바이트 수와 같습니다.

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