📜  cv2 warpaffin 旋转 - Python (1)

📅  最后修改于: 2023-12-03 15:00:11.019000             🧑  作者: Mango

Python中的cv2 warpaffine 旋转介绍

在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()函数进行旋转操作的原理和代码实现方法,同时提供了参数解释,希望对大家有所帮助。除了旋转操作外,还可以通过仿射变换实现平移、缩放等操作,欢迎大家继续学习和探索。