阅读图片
import numpy as np
import cv2 as cv
# Load an color image in grayscale
img = cv.imread('messi5.jpg',0)
使用函数cv.imread()读取图像。图像应位于工作目录中,或者应提供完整的图像路径。
第二个参数是一个标志,指定应该读取图像的方式。
- cv.IMREAD_COLOR:加载彩色图像。任何图像的透明度都将被忽略。这是默认标志
- cv.IMREAD_GRAYSCALE:以灰度模式加载图像
-
cv.IMREAD_UNCHANGED:加载图像,包括alpha通道
注意:即使图像路径错误,它也不会抛出任何错误,但print img会给你None
显示图片
cv.imshow('image',img)
cv.waitKey(0)
cv.destroyAllWindows()
使用函数cv.imshow()在窗口中显示图像。窗口自动适应图像大小。
第一个参数是一个窗口名称,它是一个字符串。
第二个参数是读取的图像。 您可以根据需要创建任意数量的窗口,但使用不同的窗口名称。
cv.waitKey()是一个键盘绑定函数。它的参数是以毫秒为单位的时间。该函数等待任何键盘事件的指定毫秒。如果您在该时间内按任意键,程序将继续。如果为 0,则无限期等待键击。它也可以设置为检测特定的键击,如果按下键a等,我们将在下面讨论。
注意:除了绑定键盘事件,此函数还处理许多其他GUI事件,因此您必须使用它来实际显示图像。
cv.destroyAllWindows()只是破坏了我们创建的所有窗口。如果要销毁任何特定窗口,请使用函数 cv.destroyWindow(),其中传递确切的窗口名称作为参数。
cv.namedWindow('image',cv.WINDOW_NORMAL)
cv.imshow('image',img)
cv.waitKey(0)
cv.destroyAllWindows()
有一种特殊情况,您可以在以后创建窗口并将图像加载到该窗口。在这种情况下,您可以指定窗口是否可调整大小。它使用函数cv.namedWindow()完成。默认情况下,标志为cv.WINDOW_AUTOSIZE。但是如果将flag指定为cv.WINDOW_NORMAL,则可以调整窗口大小。当图像尺寸过大并向窗口添加轨迹栏时,它会很有用。
写一个图像
cv.imwrite('messigray.png',img)
第一个参数是文件名/路径,第二个参数是要保存的图像。
import numpy as np
import cv2 as cv
img = cv.imread('messi5.jpg',0)
cv.imshow('image',img)
k = cv.waitKey(0)
if k == 27: # wait for ESC key to exit
cv.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
cv.imwrite('messigray.png',img)
cv.destroyAllWindows()
警告
如果您使用的是64位计算机,则必须k = cv.waitKey(0)按如下方式修改行:k = cv.waitKey(0) & 0xFF
使用Matplotlib
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('messi5.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()
Matplotlib是Python的绘图库,为您提供各种绘图方法。您将在即将发表的文章中看到它们。在这里,您将学习如何使用Matplotlib显示图像。您可以使用Matplotlib缩放图像,保存等。
警告
OpenCV加载的彩色图像处于BGR模式。但Matplotlib以RGB模式显示。因此,如果使用OpenCV读取图像,则Matplotlib中的彩色图像将无法正确显示。
网友评论