透視轉換使用方式和仿射轉換雷同,也是先得到透視矩陣,再用這個矩陣進行透視轉換,差異在需要輸入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。