首先要知道什麼事仿射變換,仿射變換就是只包含:平移,旋轉,縮放這三種變換的變換。仿射變換會保證變換前後兩幅圖的「平行性」和「平直性不變」。
大家知道,對二維影象做變換就是要講每個畫素點的座標通過乙個「單應性矩陣」對映到新的座標點上去。所以關鍵就是得到這個「單應性矩陣」。
對於仿射變換的單應性矩陣可以用乙個2*3的矩陣來表示。一共6個需求的引數,需要6個矩陣(3對對應點)方可以解出。
若已知兩幅圖中的3對對應點則可以使用getaffinetransform來獲得:
其中兩個引數都是point2f型別的矩陣,分別儲存了兩幅影象的對應點。前者是初始點,後者是目標點。
warpaffine引數分別為:需要做變換的影象,變換後影象,單應矩陣,變換後影象的大小。(src
,warp_dst
,warp_mat
,warp_dst
.size
());
得到變化的單應性矩陣還有第二種方法就是使用
rot_mat其中,center是旋轉中心。是point型別的資料。angle 是旋轉的角度,正值為逆時針方向。最後是縮放的係數。=getrotationmatrix2d
(center
,angle
,scale
);
仿射變換 3 一般的仿射變換
一般的仿射變換是下面五種變換的組合 旋轉,平移,縮放,錯切,翻轉。仿射變換能夠保持影象的平直性和平行性。平直性是指 影象經過仿射變換後,直線仍然是直線。平行性是指 影象經過仿射變換後,平行線仍然是平行線。opencv提供了cv2.getaffinetransform 來生成仿射變換所使用的矩陣m。步...
Opencv中的仿射變換和透射變換
opencv提供了一些關於透視變換的介面,例如getperpectivetransform,warpperspective等。這裡主要說明一下warpperspective是如何工作的。其實opencv中很多影象變換的對映關係都是反直覺的,如這裡的warpperspective和remap函式。直覺...
opencv 仿射變換的實現
先放 這版的 有點錯誤,裡面的指標分配了記憶體以後沒有釋放,有可能會造成記憶體洩漏 問題原因已經找到了,現在有點累,休息一下。大概說一下吧,主要是因為越界的問題 比如說反變換到輸入影象的時候,正確範圍應該是 0,in.rows 1 而不是 0,in.rows 果然,這一版的函式還是有bug,影象的平...