더북(TheBook)

이와 같이 포인터 변수 ptr에 특정 행 시작 주소를 받아 온 후에는 해당 행의 픽셀 값을 ptr[0], ptr[1], ..., ptr[img.cols-1] 형태로 접근할 수 있습니다. 예를 들어 ptr[0]은 (0, 0) 좌표 픽셀을 가리키며, 이는 Vec3b 자료형에 해당합니다. 그러므로 ptr[0] 코드 뒤에 다시 한 번 [] 연산자를 붙여서 해당 픽셀의 파란색(B), 녹색(G), 빨간색(R) 색상 성분 값을 얻을 수 있습니다.

uchar b2 = ptr[0][0];
uchar g2 = ptr[0][1];
uchar r2 = ptr[0][2];

결국 앞 코드에서 변수 b2, g2, r2에는 각각 (0, 0) 픽셀의 파란색, 녹색, 빨간색 성분 값이 저장됩니다.

컬러 영상의 픽셀 값 참조 방법을 이용하여 컬러 영상을 반전하는 예제 코드를 코드 10-1에 나타냈습니다. 코드 10-1에 나타난 color_inverse() 함수는 butterfly.jpg 컬러 영상의 모든 픽셀 값을 반전시켜 화면에 나타냅니다. 컬러 영상을 반전하려면 B, G, R 세 개의 색상 성분 값을 각각 255에서 빼는 연산을 수행해야 합니다. color_inverse() 함수가 정의된 소스 파일과 사용된 영상 파일은 내려받은 예제 파일 중에서 ch10/ColorOp 프로젝트를 참고하기 바랍니다.

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