getPerspectiveTransform() 함수는 src에 저장된 네 점을 dst 좌표의 점으로 옮기는 투시 변환 행렬을 반환합니다. 점의 좌표를 담고 있는 src와 dst는 Point2f 자료형 네 개를 가지고 있는 배열을 사용해도 되고, 또는 vector<Point2f> 자료형을 사용해도 됩니다. getPerspectiveTransform() 함수가 반환하는 Mat 객체는 CV_64FC1 타입을 사용하는 3×3 크기의 투시 변환 행렬입니다.
3×3 투시 변환 행렬을 가지고 있을 때, 영상을 투시 변환한 결과 영상을 생성하려면 warpPerspective() 함수를 사용합니다. warpPerspective() 함수 원형은 다음과 같습니다.
void warpPerspective(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags = INTER_LINEAR, int borderMode = BORDER_CONSTANT, const Scalar& borderValue = Scalar()); |
|
• src |
입력 영상 |
• dst |
결과 영상. src와 같은 타입. 크기는 dsize |
• M |
3×3 투시 변환 행렬 |
• dsize |
결과 영상의 크기 |
• flags |
보간법 알고리즘. 만약 OR 연산자를 이용하여 WARP_INVERSE_MAP 플래그를 함께 지정하면 역방향으로 변환을 수행합니다. |
• borderMode |
가장자리 픽셀 확장 방식. BorderTypes 열거형 상수 중 하나를 지정합니다. 만약 BORDER_TRANSPARENT를 지정하면 입력 영상의 픽셀 값이 복사되지 않는 영역은 dst 픽셀 값을 그대로 유지합니다. |
• borderValue |
borderMode가 BORDER_CONSTANT일 때 사용할 상수 값. 기본값으로 검은색이 지정되어 있습니다. |