如何使用Python在OpenCV中执行图像旋转?

如何使用Python在OpenCV中执行图像旋转?

要按角度执行图像旋转,首先需要获取旋转矩阵。 为了找到旋转矩阵,我们应用 cv2.getRotationMatrix2D() 函数。 此函数的语法为 –

M = cv2.getRotationMatrix2D(cr, degree, scale)

其中 cr 是旋转中心, degree 是图像旋转的角度,而 scale 是缩放图像的比例因子。

旋转矩阵M是2×2矩阵(numpy数组)。 我们将旋转矩阵M作为参数传递给 cv2.warpAffine() 函数。 查看下面的语法 –

语法

cv2.warpAffine(img, M, (width, height))

这里,

  • img - 要旋转的输入图像。

  • M - 上述定义的旋转矩阵。

  • (width,height) -旋转后图像的宽度和高度。

步骤

要执行图像旋转,可以按照下面给出的步骤进行 –

导入所需库。 在所有以下Python示例中,所需的Python库是OpenCV。 确保您已经安装了它。

import cv2

使用 cv2.imread() 函数读取输入图像。 传递输入图像的完整路径。

img = cv2.imread('interior1.jpg')

使用 cv2.getRotationMatrix2D(cr,degree,scale) 函数定义旋转矩阵M。 例如,将旋转中心 cr=(width/2,height/2) ,旋转角度degree=30,缩放因子scale=1传递给该函数。

M = cv2.getRotationMatrix2D(cr,30,1)

使用 cv2.warpAffine() 方法对图像进行旋转。

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

显示旋转后的图像。

cv2.imshow('Image Translation', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

让我们看一些例子,以便更清楚地理解问题。

输入图像

我们在下面的示例中使用以下图像作为输入文件。

如何使用Python在OpenCV中执行图像旋转?

示例1

在此程序中,我们将输入图像顺时针旋转30度。 旋转中心是图像的中点(中心),即 (width/2,height/2)

#导入所需库
import cv2

#读取输入图像
img=cv2.imread('interior1.jpg')

#访问图像的高度和宽度
height,width,_ =img.shape

#定义旋转中心
cr=(width/2,/2)

#获取旋转矩阵
M=cv2.getRotationMatrix2D(cr,30,1)

#应用warpAffine()方法执行图像旋转
dst=cv2.warpAffine(img,M,(width,height))

#显示旋转后的图像
cv2.imshow('Image',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

在执行时,它将产生以下的 输出窗口 -

如何使用Python在OpenCV中执行图像旋转?

注意,均方误差是一个标量值。

例子 2

在这个程序中,我们将输入图片顺时针旋转15度。旋转中心为(0,0)。

 import cv2
 import numpy as np

 img = cv2.imread('interior1.jpg')
 h,w, _ = img.shape

 M = cv2.getRotationMatrix2D((0,0),-15,1)
 dst = cv2.warpAffine(img,M,(w,h))

 cv2.imshow('Image',dst)
 cv2.waitKey(0)
 cv2.destroyAllWindows()

输出

当您运行上述Python程序时,它将产生以下的输出窗口 −

如何使用Python在OpenCV中执行图像旋转?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV