📜  OpenCV图像旋转(1)

📅  最后修改于: 2023-12-03 14:44:54.530000             🧑  作者: Mango

OpenCV图像旋转

OpenCV是一个广泛使用的开源计算机视觉库,它为我们提供了许多方便的函数和工具来处理数字图像和视频。图像旋转是数字图像处理中常见的操作之一,OpenCV提供了简单易用的函数来实现图像旋转。

代码示例

下面是使用OpenCV函数实现将图像逆时针旋转45度的示例代码:

import cv2
import numpy as np

# 加载图像
img = cv2.imread('image.png')

# 获取图像宽度和高度
(h, w) = img.shape[:2]

# 计算旋转矩阵
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, 45, 1.0)

# 应用旋转矩阵
rotated = cv2.warpAffine(img, M, (w, h))

# 显示结果
cv2.imshow("Rotated Image", rotated)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上面的代码中,我们首先使用OpenCV函数cv2.imread从文件中加载一张图像,并使用其shape属性获取图像的宽度和高度。接下来,我们使用cv2.getRotationMatrix2D函数计算一个旋转矩阵,该矩阵将图像绕着中心旋转45度。最后,我们使用cv2.warpAffine函数应用旋转矩阵并生成旋转后的图像。最后使用cv2.imshow方法显示结果。

代码解释
加载图像

首先,我们需要使用cv2.imread函数从文件加载图像。这个函数需要一个文件名作为输入,并返回一个NumPy数组对象表示图像。

img = cv2.imread('image.png')
计算旋转矩阵

我们可以使用cv2.getRotationMatrix2D函数计算旋转矩阵。该函数需要三个参数:

  • 图像的中心点 center
  • 旋转角度 angle,以度为单位。
  • 缩放比例 scale
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, 45, 1.0)

在上面的代码中,我们首先计算出中心点,以确保图像在旋转过程中绕着中心旋转。然后,我们使用该点计算一个旋转矩阵M,该矩阵将图像逆时针旋转45度。

应用旋转矩阵

使用cv2.warpAffine函数应用旋转矩阵,并生成旋转后的图像。

rotated = cv2.warpAffine(img, M, (w, h))

该函数需要三个参数:

  • 输入图像 img
  • 变换矩阵 M
  • 输出图像的大小 (w, h)

最后,我们将生成的旋转后的图像显示出来。

cv2.imshow("Rotated Image", rotated)
cv2.waitKey(0)
cv2.destroyAllWindows()
结论

通过使用OpenCV的cv2.getRotationMatrix2Dcv2.warpAffine函数,我们可以轻松地对图像进行旋转操作。这个函数确保您的图像不会失真,并提供任意角度和方向的旋转功能。了解如何进行图像旋转是数字图像处理中的一项关键技能,它可以为我们提供更好的图像预处理以及更准确的图像分析和识别。