超详细注释之OpenCV旋转图像任意角度
在这篇攻略中,我将详细讲解使用OpenCV库来旋转图像任意角度的方法,同时会在代码中添加注释,便于理解。
导入OpenCV库
首先,我们需要导入OpenCV库。在Python中,可以使用以下命令导入:
import cv2
读取并显示原始图像
在旋转图像之前,我们需要先读取原始图像。对于这个例子,我选择了一张名为"lena.jpg"的图像。读取图像的代码如下:
# 读取图像
image = cv2.imread("lena.jpg")
# 显示图像
cv2.imshow("Original Image", image)
cv2.waitKey(0)
这里的cv2.imshow()函数用于显示图像,cv2.waitKey()函数用于等待用户按下任意键后关闭窗口。
接下来,我们将使用cv2.getRotationMatrix2D()函数来旋转图像。
使用cv2.getRotationMatrix2D()函数旋转图像
首先,我们需要定义旋转角度和旋转中心。在我这个例子中,我选择将中心点设置为图像正中央,并将旋转角度设置为45度。
旋转中心的坐标可以通过以下代码计算:
(h, w) = image.shape[:2]
center = (w/2, h/2)
其中,image.shape返回一个元组,包含了图像的高度和宽度。image.shape[:2]则只取前两个元素,即图像的高度和宽度,以此计算中心点。
然后,我们可以使用cv2.getRotationMatrix2D()函数来创建一个旋转矩阵。旋转矩阵的参数包括旋转中心、旋转角度和缩放因子。在这个例子中,缩放因子设置为1,也就是保持图像大小不变。代码如下:
# 旋转图像45度
M = cv2.getRotationMatrix2D(center, 45, 1.0)
rotated = cv2.warpAffine(image, M, (w, h))
其中,cv2.warpAffine()函数用于执行实际的图像旋转操作,返回旋转后的图像。
显示旋转后的图像
最后,我们将旋转后的图像显示出来。代码如下:
# 显示旋转后的图像
cv2.imshow("Rotated Image", rotated)
cv2.waitKey(0)
示例1
下面是完整的代码,其中图像的旋转角度为30度。
import cv2
# 读取图像
image = cv2.imread("lena.jpg")
# 显示原始图像
cv2.imshow("Original Image", image)
cv2.waitKey(0)
# 计算旋转中心
(h, w) = image.shape[:2]
center = (w/2, h/2)
# 旋转图像
M = cv2.getRotationMatrix2D(center, 30, 1.0)
rotated = cv2.warpAffine(image, M, (w, h))
# 显示旋转后的图像
cv2.imshow("Rotated Image", rotated)
cv2.waitKey(0)
示例2
下面是另一个示例,其中图像的旋转角度为60度。
import cv2
# 读取图像
image = cv2.imread("lena.jpg")
# 显示原始图像
cv2.imshow("Original Image", image)
cv2.waitKey(0)
# 计算旋转中心
(h, w) = image.shape[:2]
center = (w/2, h/2)
# 旋转图像
M = cv2.getRotationMatrix2D(center, 60, 1.0)
rotated = cv2.warpAffine(image, M, (w, h))
# 显示旋转后的图像
cv2.imshow("Rotated Image", rotated)
cv2.waitKey(0)
结论
在这篇攻略中,我们学习了如何使用OpenCV库来旋转图像任意角度。通过使用cv2.getRotationMatrix2D()函数和cv2.warpAffine()函数,我们可以简单地旋转图像。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:超详细注释之OpenCV旋转图像任意角度 - Python技术站