透視轉換使用方式和仿射轉換雷同,也是先得到透視矩陣,再用這個矩陣進行透視轉換,差異在需要輸入4個點,才有足夠的參數得到矩陣,由getPerspectiveTransform()函式得到透視矩陣,warpPerspective()函式得到透視轉換。
OpenCV透視矩陣
Mat getPerspectiveTransform(const Point2f src[], const Point2f dst[])
- src:包含4個點的陣列。
- dst:包含4個點的陣列。
- dst和src的點需相對的,也就是src[0]轉換後的點為dst[0],src[1]轉換後的點為dst[1],返回一個3×3的透視矩陣。
OpenCV透視轉換
void warpPerspective(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags=INTER_LINEAR, intborderMode=BORDER_CONSTANT, const Scalar& borderValue=Scalar())
- src:輸入圖。
- dst:輸出圖,尺寸、型態和輸入圖相同。
- M:3×3的透視矩陣。
- flags:線性差值,假設使用WARP_INVERSE_MAP,代表M是反矩陣,(dst->src)
- borderType:邊緣型態。
- borderValue:邊界外推的強度值,預設為0。