【基础】图像的读取与显示
读取图像是OpenCV最基本的功能,调用cv2.imread()函数即可实现,代码如下:
"""
Author: Will Wang
Email: WillWang1998@163.com
"""
import cv2 # 导入openCV库
img = cv2.imread('lena.jpg') # 读取图片,参数为图片路径
cv2.imshow('lena', img) # 显示图片
print(img.shape)
cv2.waitKey(0) # 等待响应,0表示任意键终止,如果为1000代表1000ms结束显示
cv2.destroyAllWindows() # 销毁窗口
读取lena.jpg并显示,运行效果如下所示:

小故事:熟悉图像处理或者压缩的工程师、研究人员和学生经常在他们的实验或者项目任务里使用“Lenna”或者“Lena”的图像。Lenna图像已经成为被广泛使用的测试图像。今天,Lena的使用被认为是数字图像历史上最重要的事件之一。
函数解析:cv2.imread(filename, flag):
filename: 读取图像的路径( 绝对路径/相对路径 )
flag: 标志位,以什么形式读取图像:
cv2.IMREAD_COLOR:指定用彩色图像打开图片cv2.IMREAD_GRAYSCALE:指定用灰度图像的方式打开图片,即将原始图像转化为灰度图像再打开cv2.IMREAD_UNCHANGED:指定用图片的原有格式打开,图片是彩色就是彩色,图片是灰度图就是灰度图
全部大写是因为它们都是常量:
1:等同于cv2.IMREAD_COLOR0:等同于cv2.IMREAD_GRAYSCALE-1:等同于cv2.IMREAD_UNCHANGED
你可以尝试通过以下方法验证,如:
print(cv2.IMREAD_COLOR) # 1
函数解析:cv2.imshow(win_name, img):
imshow()函数作用是在指定窗口中显示图像,窗口默认自动适合于图像大小
win_name:指定窗口名称
img: 图像对象
如果我们需要查看图像的维度(shape),我们可以通过以下代码进行查看:
print(img.shape) # (512, 512, 3)
openCV使用 img.shape 来获取图像的形状。
如果图片是彩色的话,返回的是一个包含行数(高度)、列数(宽度)和通道数的元组。
灰度图由于通道数为1个,所以只返回包含行数(高度)、列数(宽度)的元组。
如果我们需要读取灰度图片的话,我们可以采用以下的方式,添加一个参数即可:
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)

最后可以通过以下方式将经操作后的图片保存到本地:
cv2.imwrite('lena2.jpg', img)