【基础】图像的读取与显示

读取图像是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并显示,运行效果如下所示:

image.png

小故事:熟悉图像处理或者压缩的工程师、研究人员和学生经常在他们的实验或者项目任务里使用“Lenna”或者“Lena”的图像。Lenna图像已经成为被广泛使用的测试图像。今天,Lena的使用被认为是数字图像历史上最重要的事件之一。

函数解析:cv2.imread(filename, flag)

filename: 读取图像的路径( 绝对路径/相对路径 )

flag: 标志位,以什么形式读取图像:

  • cv2.IMREAD_COLOR:指定用彩色图像打开图片

  • cv2.IMREAD_GRAYSCALE :指定用灰度图像的方式打开图片,即将原始图像转化为灰度图像再打开

  • cv2.IMREAD_UNCHANGED:指定用图片的原有格式打开,图片是彩色就是彩色,图片是灰度图就是灰度图

全部大写是因为它们都是常量:

  • 1:等同于 cv2.IMREAD_COLOR

  • 0:等同于 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)

image.png

最后可以通过以下方式将经操作后的图片保存到本地:

cv2.imwrite('lena2.jpg', img)