在这篇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被传递,那么无限等待下去,直到有按键按下。
现在运行完整的代码,结果如下。