OpenCV-Python学习(20)—— OpenCV 图像几何变换之图像旋转(cv.warpAffine、cv.getRotationMatrix2D、cv.rotate、np.rot90)
2024.01.17 11:20浏览量:29简介:本文将介绍OpenCV中的图像旋转方法,包括cv.warpAffine、cv.getRotationMatrix2D、cv.rotate和np.rot90。通过这些方法,你可以轻松地对图像进行旋转操作,满足图像处理中的各种需求。
在OpenCV-Python中,图像旋转是常见的几何变换之一。下面我们将介绍几种常用的图像旋转方法:cv.warpAffine、cv.getRotationMatrix2D、cv.rotate和np.rot90。
1. cv.warpAffinecv.warpAffine
是一个用于执行仿射变换的函数,其中包括旋转操作。该函数接受三个参数:输入图像、变换矩阵和输出图像。变换矩阵可以通过cv.getRotationMatrix2D
函数获取。
示例代码:
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 获取旋转矩阵
M = cv2.getRotationMatrix2D((img.shape[1]/2, img.shape[0]/2), 45, 1)
# 执行仿射变换(旋转)
rotated = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
在这个例子中,我们将图像顺时针旋转45度。
2. cv.getRotationMatrix2Dcv.getRotationMatrix2D
是一个用于获取旋转矩阵的函数。该函数接受三个参数:中心点坐标、旋转角度和缩放因子。旋转矩阵可用于cv.warpAffine
函数进行图像旋转。
示例代码:
import cv2
# 获取旋转矩阵(以图像中心为旋转中心,旋转45度)
M = cv2.getRotationMatrix2D((img.shape[1]/2, img.shape[0]/2), 45, 1)
在这个例子中,我们获取了一个将图像顺时针旋转45度的旋转矩阵。
3. cv.rotatecv.rotate
是一个用于执行各种几何变换的函数,其中包括旋转操作。该函数接受两个参数:输入图像和变换类型。变换类型可以是cv2.ROTATE_90_CLOCKWISE
(顺时针旋转90度)、cv2.ROTATE_90_COUNTERCLOCKWISE
(逆时针旋转90度)等。
示例代码:
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 执行旋转操作(顺时针旋转90度)
rotated = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
在这个例子中,我们将图像顺时针旋转90度。
4. np.rot90np.rot90
是一个用于旋转数组的函数,可以用于旋转图像。该函数接受两个参数:输入数组和旋转方向。旋转方向可以是np.rot90
(顺时针旋转90度)、np.rot90(2)
(逆时针旋转90度)等。需要注意的是,该函数会修改原始数组。
示例代码:
import numpy as np
import cv2
# 读取图像并转换为数组
img = cv2.imread('image.jpg')
arr = np.array(img)
# 执行旋转操作(顺时针旋转90度)并转换回图像格式
rotated = np.rot90(arr)
rotated_img = np.uint8(rotated)
在这个例子中,我们将图像顺时针旋转90度。需要注意的是,我们需要将旋转后的数组转换回图像格式。

发表评论
登录后可评论,请前往 登录 或 注册