OpenCV Python 核心操作 幾何變換

2021-08-20 17:55:52 字數 1663 閱讀 6845

1.

幾何變換的實際意義

從線性代數角度來看,在乙個向量

[x,y]

前面乘以乙個矩陣

其本質上,是將向量

[x,y]

轉換到[a1,b1] , [a2,b2]

的座標系中,即實現向量

[x,y]

的位移

2.擴充套件縮放

opencv

提供cv2.resize(

圖形檔案,(

x方向長度,

y方向高度),轉換模式)或者

cv2.resize(

圖形檔案,

fx=x

方向倍數,

fy=y

方向倍數,轉換模式

)來實現圖形的縮放

例:img_resize =cv2.resize(img,(2*col,2*row),interpolation=cv2.inter_cubic)

其中轉換模式

interpolation=

常用有cv2.inter_area, cv2.inter_cubic,cv2.inter_linear

等,不同之處在於插值方式不同。

結果如下:

3.平移

平移操作本質上,是將每個畫素的座標都乘以乙個位移矩陣,使得畫素座標變換來實現位移。

opencv

提供cv2.warpaffine(

圖形檔案,位移矩陣,(位移後視窗長度,位移後視窗寬度)

)來實現位移,

所以位移操作的重點在於構建位移矩陣。位移矩陣格式如下:

x方向位移距離,ty為

y方向位移距離。具體推導如下:

例:m=np.float32([[1,0,50],[0,1,50]])

img_change=cv2.warpaffine(img,m,(2*col,2*row))

其結果如下:

4.旋轉 選擇操作首先要使用

cv2.getrotationmatrix2d((

旋轉中心x座標

,旋轉中心y座標

) ,

旋轉角度

, 旋轉後視窗大小倍數

) 來構建旋轉矩陣。旋轉矩陣格式如下:

再將這個旋轉矩陣,傳給函式

cv2.warpaffine()

來實現旋轉。其原理和位移操作一樣。

例:rotate_m = cv2.getrotationmatrix2d((col/2,row/2),45,0.8)

img_rotate = cv2.warpaffine(img,rotate_m,(col,row))

其結果如下:

OpenCV Python 核心操作 邊緣檢測

邊緣檢測其實就是利用乙個高通濾波器和影象進行卷積,影象中的邊緣 即高頻部分 在濾波器 的作用下,保留高頻部分,也就是留下邊緣 或者換乙個角度考慮,對影象進行 x方向和 y方向的差分,在影象的邊緣差分結果會比別的地方大,再利用差分可以計算出梯度,邊緣總會出現在梯度最大的地方 1.幾個基本運算元 常用的...

OpenCV Python 核心操作 模板匹配

在opencv裡,模板匹配和卷積原理很像,模板在原影象上從原點開始滑動,計算模板與 影象被模板覆蓋的地方 的差別程度,這個差別程度的計算方法在opencv裡有 6種,然後將每次計算的結果放入乙個矩陣裡,作為結果輸出。假如原圖形是 axb大小,而模板是 axb大小,則輸出結果的矩陣是 a a 1 x ...

linux降核心版本 Linux核心降級操作

linux 核心降級操作 環境 機器型號 hp proliant bl685c g7 系統版本 redhat 6.0 核心版本 2.6.32 504.16.2.el6.x86 64 ip位址 10.221.18.47 操作目的 因為移動補丁下發平台下發了核心公升級補丁,導致系統重啟後,核心版本被從原...