더북(TheBook)

이 예제 코드의 첫 번째 행에서는 cat.bmp 고양이 영상을 3채널 컬러 영상 형태로 불러와서 img1 변수에 저장하였습니다. 두 번째 행에서 img1 변수 이름 바로 뒤에 괄호를 붙여서 사용하였는데, 이 부분이 Mat 클래스의 괄호 연산자 재정의로 동작합니다. 즉, img1(Rect(220, 120, 340, 240)) 코드는 img1 영상의 (220, 120) 좌표부터 340×240 크기만큼의 사각형 부분 영상을 추출하는 코드이고, 추출한 부분 영상은 img2 변수에 저장하였습니다. 만약 img1과 img2 영상을 imshow() 함수를 사용하여 화면에 출력하면 그림 3-4와 같이 나타납니다. 그림 3-4에서 img2 창에 나타난 부분 영상의 가로 크기는 340픽셀이고 세로 크기는 240픽셀입니다.

▲ 그림 3-4 부분 영상 추출 결과

 

부분 영상을 추출할 때 주의할 점은 Mat 클래스의 괄호 연산자를 이용하여 얻은 부분 영상이 독립된 메모리 공간을 확보하여 복사하는 깊은 복사가 아니라, 픽셀 데이터를 공유하는 얕은 복사 형식이라는 점입니다. 그렇기 때문에 부분 영상을 추출한 후 부분 영상의 픽셀 값을 변경하면 추출한 부분 영상뿐만 아니라 원본 영상의 픽셀 값도 함께 변경됩니다.

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