如何使用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所有,未经许可,不得转载
你可能还喜欢