在这篇Python OpenCV文章中,我们将讨论OpenCV中的图像旋转,我们可以使用cv2.rotate()函数在OpenCV中旋转图像,有三种常量类型的旋转可以作为参数在函数中传递。这些是Constants(常量)。

  • cv2.ROTATE_90_CLOCKWISE
  • cv2.ROTATE_90_COUNTERCLOCKWISE
  • cv2.ROTATE_180

这是Python中OpenCV图像旋转的完整源代码

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('lena.tif')

#我们的三个旋转
img_rotate_90_clockwise = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
img_rotate_90_counterclockwise = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE)
img_rotate_180 = cv2.rotate(img, cv2.ROTATE_180)

#转换图像从bgr到rgb
original_image = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_clockwise = cv2.cvtColor(img_rotate_90_clockwise, cv2.COLOR_BGR2RGB)
img_counterclockwise = cv2.cvtColor(img_rotate_90_counterclockwise, cv2.COLOR_BGR2RGB)
img_180 = cv2.cvtColor(img_rotate_180, cv2.COLOR_BGR2RGB)

titles = ["Original Image", "Image 90 Clockwise", "Image 90 CounterClockWise", "Image Rotate 180" ]
images = [original_image, img_clockwise, img_counterclockwise,img_180 ]

for i in range(4):
    plt.subplot(2,2, i+1)
    plt.imshow(images[i])
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])

plt.show()

cv2.waitKey(0)
cv2.destroyAllWindows()

这行代码用于读取图像,请确保在工作目录中添加了图像。

img = cv2.imread('lena.tif')

在这里,我们使用了cv2.rotate()函数,并添加了三种类型的旋转。

img_rotate_90_clockwise = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
img_rotate_90_counterclockwise = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE)
img_rotate_180 = cv2.rotate(img, cv2.ROTATE_180)

因为我们要在Matplotlib中显示图像,所以Matplotlib使用RGB(红、绿、蓝)颜色系统,而OpenCV使用BGR(蓝、绿、红)颜色系统,所以我们需要将BGR颜色转换为RGB。如果我们不这样做,颜色就会变混乱。

original_image = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_clockwise = cv2.cvtColor(img_rotate_90_clockwise, cv2.COLOR_BGR2RGB)
img_counterclockwise = cv2.cvtColor(img_rotate_90_counterclockwise, cv2.COLOR_BGR2RGB)
img_180 = cv2.cvtColor(img_rotate_180, cv2.COLOR_BGR2RGB)

注意:cv2.waitKey()是一个键盘绑定函数。它的参数是以毫秒为单位的时间。

该函数为任何键盘事件等待指定的毫秒。如果您在此时间内按下任何键,程序将继续。如果0被传递,那么无限等待下去,直到有按键按下。

现在运行完整的代码,结果如下。

发表评论

电子邮件地址不会被公开。 必填项已用*标注