더북(TheBook)

10.1.1 컬러 영상의 픽셀 값 참조

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

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

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

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

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