• 3행 tekapo.bmp 파일을 3채널 컬러 영상으로 불러와 src에 저장합니다.
• 10행 입력 영상과 출력 영상에서의 세 점 좌표를 저장할 srcPts와 dstPts 배열을 선언합니다.
• 11~13행 srcPts 배열에 입력 영상의 좌측 상단, 우측 상단, 우측 하단의 좌표를 저장합니다.
• 14~16행 dstPts 배열에 srcPts 점들이 이동할 좌표를 저장합니다.
• 18행 2×3 어파인 변환 행렬을 M에 저장합니다.
• 21행 어파인 변환 행렬 M을 이용하여 src 영상을 어파인 변환하여 dst에 저장합니다. warpAffine() 함수의 네 번째 인자에 Size()를 지정하여 dst 영상 크기가 src 영상 크기와 같아지도록 설정하였습니다.
코드 8-1에서 사용한 tekapo.bmp 영상은 640×480 크기의 호수 영상입니다. 기하학적 변환은 그레이스케일 영상과 3채널 컬러 영상에 대해 동일한 방식으로 동작하므로 이 예제에서는 3채널 컬러 영상을 입력으로 사용하였습니다. 입력 영상에서 좌측 상단, 우측 상단, 우측 하단 점의 좌표를 srcPts 배열에 저장하였고, dstPts 배열은 srcPts 각 점이 이동할 좌표를 임의로 지정하였습니다. 즉, affine_transform() 함수에서는 (0, 0) 점은 (50, 50)으로 이동하고, (639, 0) 점은 (540, 100)으로, (639, 479) 점은 (590, 430) 좌표로 이동하는 어파인 변환을 사용합니다.