如何使用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()
输出量
从输出中,您可以看到我们的图像从左上角旋转到-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中旋转图像。