C Opencv 第卅八天 仿射變換

2021-09-25 23:48:21 字數 673 閱讀 3202

仿射矩陣其實並不複雜,它只是乙個兩行三列的矩陣,用它乘上點座標(x,y),就能實現對點的伸縮、旋轉、平移操作。

複雜的是怎樣求仿射矩陣。

下面這篇文章講的是基本的仿射變換。

感謝原博主(似乎我和原博主是同屆畢業哈):

什麼是仿射變換?

仿射變換就是影象的線性變換加上平移,用一幅圖表示,就是

由 image1 到 image2 的轉換經過了三個操作

1.旋轉 (線性變換) 

2.縮放操作(線性變換)

3.平移 (向量加)

如果沒有了第3個平移的操作,那它就是線性變換。前兩個筆記已經整理了影象的旋轉、縮放和平移的各個方法,接下來會介紹仿射變換的矩陣表示和使用方法。

放射變化的矩陣形式

影象的變換要對影象的每乙個畫素點進行操作,假設其中的乙個畫素點的座標是(x,y),我們用矩陣形式表示:

我們通常使用 2 x 3 矩陣來表示仿射變換。

矩陣 a、b 就是變換矩陣

c opencv 矩陣掩膜

第一行 cols明顯是int變數,src是mat變數 在前面宣告 因為mat結構體變數名,所以src.cols 1是獲取列數 總列數減一,因為最後一列 最開始一列 最後一行和最開始一行不用,所以去掉 src.channels 也是乙個結構體裡的方法,獲取的通道數,因為畫素的通道數隻與列有關所以相乘獲...

c opencv 畫素操作 老太君

opencv對畫素的操作有兩種,一種是先獲取某行的指標,在確定需要操作的畫素。如 mat src imread 導一張 const uchar ptr src.ptr row 定義乙個uchar指標存放該第row行畫素的指標 確定畫素也就簡單了,因為畫素是陣列一樣排列的,如要訪問第乙個畫素ptr 另...

c opencv中線條細化演算法

要達到的效果就是將線條盡量細化成單畫素,按照 上的hilditch演算法試了一下,發現效果不好,於是自己嘗試著寫了一下細化的演算法,基本原理就是從上下左右四個方向向內收縮。1.先是根據中的原則確定了以下16種情況 2.除錯過後發現,迭代次數多了之後,原來連線著的線條會斷開,分析原因如下圖 3.修改了...