openCV—Python(5)—— 圖像幾何變換


一、函數簡單介紹

1、warpAffine—圖像放射變換(平移、旋轉、縮放)

函數原型:warpAffine(src, M, dsize, dst=None, flags=None, borderMode=None, borderValue=None)

src:原圖像矩陣;

M:變換矩陣;

dszie:圖像尺寸(大小)

其他參數默認就可以。

2、flip—圖像翻轉

函數原型:flip(src, flipCode, dst=None)

sre:原圖像矩陣。

flipCode:翻轉方向:1:水平翻轉;0:垂直翻轉;-1:水平垂直翻轉

dst:默認就可以

二、實例演練

1、讀取一幅圖像:

1)向x軸正方向平移25個像素。

2)向y軸正方向平移50個像素;

2、讀取一幅圖像:

1)向x軸負方向平移50個像素;

2)向y軸負方向平移90個像素。

代碼例如以下:

#encoding:utf-8
import numpy as np
import cv2
image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
M = np.float32([[1,0,25],[0,1,50]])#平移矩陣1:向x正方向平移25,向y正方向平移50
shifted = cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))
cv2.imshow("Shifted Down and Right",shifted)
cv2.waitKey(0)
M = np.float32([[1,0,-50],[0,1,-90]])#平移矩陣2:向x負方向平移-50,向y負方向平移-90
shifted = cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))
cv2.imshow("Shifted Up and Left",shifted)
cv2.waitKey(0)

結果例如以下:
1、原圖像
這里寫圖片描寫敘述
2、x-25,y-50
這里寫圖片描寫敘述
3、x-50,y-90
這里寫圖片描寫敘述

3、讀取一幅圖像:

1)旋轉45度,縮放0.75;

4、讀取一幅圖像:

1)旋轉-45度,縮放1.25;

代碼例如以下:

#encoding:utf-8
import numpy as np
import cv2
image = cv2.imread("H:\\img\\lena.jpg")

cv2.imshow("Original",image)
cv2.waitKey(0)
(h,w) = image.shape[:2]
center = (w / 2,h / 2)

#旋轉45度,縮放0.75
M = cv2.getRotationMatrix2D(center,45,0.75)#旋轉縮放矩陣:(旋轉中心,旋轉角度,縮放因子)
rotated = cv2.warpAffine(image,M,(w,h))
cv2.imshow("Rotated by 45 Degrees",rotated)
cv2.waitKey(0)
#旋轉-45度。縮放1.25
M = cv2.getRotationMatrix2D(center,-45,1.25)#旋轉縮放矩陣:(旋轉中心。旋轉角度,縮放因子)
rotated = cv2.warpAffine(image,M,(w,h))
cv2.imshow("Rotated by -90 Degrees",rotated)
cv2.waitKey(0)

結果例如以下:
1、原圖像
這里寫圖片描寫敘述
2、theta-45,0.75
這里寫圖片描寫敘述
3、theta- -45,1.25
這里寫圖片描寫敘述

5、讀取一幅圖像:

1)水平翻轉。

2)垂直翻轉;

3)水平垂直翻轉;

代碼例如以下:

#encoding:utf-8
import cv2
#
#圖像翻轉
#

image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
cv2.waitKey(0)

#圖像水平翻轉
flipped = cv2.flip(image,1)
cv2.imshow("Flipped Horizontally", flipped)
cv2.waitKey(0)

#圖像垂直翻轉
flipped = cv2.flip(image,0)
cv2.imshow("Flipped Vertically", flipped)
cv2.waitKey(0)

#圖像水平垂直翻轉
flipped = cv2.flip(image,-1)
cv2.imshow("Flipped Horizontally & Vertically", flipped)
cv2.waitKey(0)

結果例如以下:
1、原圖像
這里寫圖片描寫敘述
2、水平翻轉
這里寫圖片描寫敘述
3、垂直翻轉
這里寫圖片描寫敘述
4、水平垂直翻轉
這里寫圖片描寫敘述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM