더북(TheBook)

코드 8-7의 perspective 프로그램 실행 결과를 그림 8-14에 나타냈습니다. perspective 프로그램이 처음 실행되면 일단 src 창만 화면에 나타납니다. src 창에 나타난 영상은 card.bmp 파일이고, 이 영상에는 네 장의 카드가 정돈되지 않은 상태로 나열되어 있습니다. 이 창에서 사용자가 특정 카드의 네 모서리를 마우스로 클릭하면 직사각형 형태로 투시 변환된 결과 영상이 dst 창에 나타납니다. 그림 8-14에 나타난 결과는 다이아 K 카드의 네 모서리를 마우스로 클릭한 후의 모습입니다. 이때 마우스를 이용한 좌표 선택은 카드의 좌측 상단 모서리 점부터 시작하여 시계 방향 순서로 선택해야 하며, 마우스로 클릭한 위치는 빨간색 원을 그려서 표시하였습니다. 일반적인 카드의 가로 대 세로 크기 비율이 2:3이기 때문에 dst 창에 나타날 영상의 크기를 200×300으로 설정하였습니다. 그 결과 dst 창에 다이아 K 카드가 200×300 크기로 반듯하게 투시 변환되어 나타나는 것을 확인할 수 있습니다.

▲ 그림 8-14 영상의 투시 변환 예제 실행 결과

 

참고로 3×3 투시 변환 행렬을 가지고 있을 때, 일부 점들이 투시 변환에 의해 어느 위치로 이동할 것인지를 알고 싶다면 perspectiveTransform() 함수를 사용할 수 있습니다. perspectiveTransform() 함수 원형은 다음과 같습니다.

void perspectiveTransform(InputArray src, OutputArray dst, InputArray m);

src

입력 행렬 또는 vector<Point2f>. 점의 좌표를 다채널로 표현합니다.

dst

출력 행렬 또는 vector<Point2f>

m

변환 행렬. 3×3 또는 4×4 실수형 행렬

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