코드 4-17의 mask_copyTo() 함수 동작을 이해하기 위해 그림 4-16을 살펴보겠습니다. 그림 4-16에서 src는 airplane.bmp 파일에 저장된 영상이고, mask는 mask_plane.bmp 파일에 저장된 영상입니다. mask는 그레이스케일 영상이며, src 영상에서 비행기가 있는 위치에서만 픽셀 값이 255이고 나머지 영역은 픽셀 값이 0입니다. 그림 4-16의 왼쪽에 나타난 dst 영상은 field.bmp 파일에 저장된 들판 영상입니다. src, dst, mask 영상을 이용하여 src.copyTo(dst, mask) 코드를 수행하면 그림 4-16의 오른쪽에 나타난 형태로 dst 영상이 변경됩니다. 즉, mask 영상에서 흰색으로 표현된 위치에서만 src 영상의 픽셀 값이 dst 영상으로 복사됩니다. src와 dst 영상은 서로 크기와 타입이 같기 때문에 src.copyTo(dst, mask) 코드가 실행될 때 dst 영상이 새로 생성되거나 초기화되지 않으며, 오직 마스크 영상에 의해 지정된 비행기 영역 픽셀 값만 복사됩니다.3 mask_copyTo() 함수가 실행되면 그림 4-16의 오른쪽에 나타난 dst 영상이 화면에 출력됩니다.
▲ 그림 4-16 mask_op( ) 함수의 동작 원리
3 소스 코드에서 변수 src는 source를 의미하고, dst는 destination을 의미합니다. 즉, src는 입력 영상, dst는 출력 또는 결과 영상을 나타내는 변수 이름으로 사용됩니다.