1. 程式人生 > 實用技巧 >透視變換

透視變換

OpenCV提供了兩種圖片變換的方式:仿射變換和透視變換,兩者的區別很容易區分,

  • 前者是將矩形的圖片變成平行四邊形
  • 後者是將圖片變成梯形

透視變換(Perspective Transformation)是將成像投影到一個新的視平面(Viewing Plane),也稱作投影對映(Projective Mapping)。如圖所示

函式原型

OpenCV提供了warpPerspective( )函式來實現圖片的透視變換,只需要輸入梯形四個頂點的座標和目標畫布四個角的座標,即可自動完成轉換。核心程式碼只有兩行:首先讀取兩個座標陣列,計算變換矩陣;然後根據變換矩陣對原圖進行透視變換,並輸出到目標畫布。

 cv2.getPerspectiveTransform(src, dst) → retval

引數說明

  • src:源影象中待測矩形的四點座標
  • sdt:目標影象中矩形的四點座標

返回由源影象中矩形到目標影象矩形變換的矩陣

注意!

  原影象的四個座標順序應與目標影象中的四個座標一 一隨影,若都是順時針則都是順時針,若都是 Z 字型,則都是 Z 字型。

仿射變換

cv2.warpPerspective(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) → dst

引數為:

  • src:輸入影象
  • M:變換矩陣
  • dsize:目標影象shape
  • flags:插值方式,interpolation方法INTER_LINEAR或INTER_NEAREST
  • borderMode:邊界補償方式,BORDER_CONSTANT or BORDER_REPLICATE
  • borderValue:邊界補償大小,常值,預設為0