📅  最后修改于: 2023-12-03 15:00:11.019000             🧑  作者: Mango
在Python的OpenCV库中,cv2.warpAffine()
函数可以用来进行图片的仿射变换,其中包括旋转、平移、缩放等操作,是图像处理中常用的一种方法。本文将着重介绍其中的旋转操作。
旋转是把图像绕着中心点进行顺时针或逆时针的旋转变换,产生不同角度的图像。通过OpenCV库中的cv2.getRotationMatrix2D()
函数,我们可以得到包含旋转角度和图像缩放比例的旋转矩阵,从而实现图片的旋转。
以下是一个简单的例子,展示如何使用cv2.getRotationMatrix2D()
函数和cv2.warpAffine()
函数来旋转图片。其中,$M$表示旋转矩阵,$angle$表示旋转角度,$scale$表示缩放比例。
import cv2
import numpy as np
img = cv2.imread('image.jpg')
rows, cols = img.shape[:2]
# 获取旋转矩阵
angle = 45
scale = 1
M = cv2.getRotationMatrix2D((cols/2, rows/2), angle, scale)
# 进行仿射变换
rotated_img = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow('original image', img)
cv2.imshow('rotated image', rotated_img)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.getRotationMatrix2D(center, angle, scale)
函数的参数解释:
center
:旋转中心点坐标,一般为图像中心点坐标,示例代码中使用(cols/2, rows/2)
表示中心点坐标;angle
:旋转角度,可以是正数(顺时针)或负数(逆时针);scale
:图像缩放比例,一般为1,表示不缩放。如果使用0.5,则表示缩小一半,使用2则表示扩大一倍。cv2.warpAffine(img, M, (cols, rows))
函数的参数解释:
img
:原始图像;M
:旋转矩阵;(cols, rows)
:输出图像的大小,一般与原始图像相同。注意,这里列数在前,行数在后。本文介绍了Python中使用cv2.warpAffine()
函数进行旋转操作的原理和代码实现方法,同时提供了参数解释,希望对大家有所帮助。除了旋转操作外,还可以通过仿射变换实现平移、缩放等操作,欢迎大家继续学习和探索。