如何使用OpenCV在Python中旋轉圖像

圖像旋轉是仿射變換的一種特殊形式。 OpenCV-Python模塊處理與計算機視覺相關的實時應用程序。 它提供了一些內置功能來處理來自用戶輸入的圖像。 我們使用cv2.getRotationMatrix2D()方法轉換矩陣,並使用cv2.warpAffine()方法基於矩陣轉換來旋轉圖像。

使用OpenCV在Python中旋轉圖像

要旋轉圖像,請應用矩陣變換。 要創建矩陣變換,請使用cv2.getRotationMatrix2D()方法,並傳遞我們希望旋轉發生的原點。 如果傳遞原點(0,0),則它將開始從左上角開始變換矩陣。 getRotationMatrix2D()函數計算2D旋轉的仿射矩陣。

然後,我們可以指定旋轉發生的度數。 例如,-25度,則可以傳入值1。

在最後一步中,使用此轉換矩陣通過cv2.warpAffine()方法旋轉圖像,然後我們需要傳遞圖像的形狀。

warpAffine()函數將仿射變換應用於圖像。 它使用指定的矩陣轉換源圖像。

# app.py

import numpy as np
import cv2

img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)

M = cv2.getRotationMatrix2D((0, 0), -25, 1)
rotated = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))

cv2.imshow('Rotated Image', rotated)

cv2.waitKey(0)
cv2.destroyAllWindows()

輸出量

使用OpenCV在Python中旋轉圖像

從輸出中,您可以看到我們的圖像從左上角旋轉到-25度。 圖像旋轉是幾何變換,可以通過正向映射或逆向映射完成。

讓我們將圖像從原點(150,150)旋轉到-30度。

# app.py

import numpy as np
import cv2

img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)

M = cv2.getRotationMatrix2D((150, 150), -30, 1)
rotated = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))

cv2.imshow('Rotated Image', rotated)

cv2.waitKey(0)
cv2.destroyAllWindows()

輸出量

影像旋轉

在仿射變換中,原始圖像的所有平行線在輸出圖像中仍將相似。

結論

warpAffine()和getRotationMatrix2D()方法根據要提供的參數執行2D圖像的各種幾何變換。 這些功能不會修改原始圖像的內容,而是會使像素網格變形並將該變形的網格映射到最終旋轉的圖像。

就是使用OpenCV在Python中旋轉圖像。

資訊來源:由0x資訊編譯自APPDIVIDEND,版權歸作者Krunal所有,未經許可,不得轉載
你可能還喜歡