详细说明见代码注释
""" 介绍如何使用 matplotlib 输入、输出 彩色图像,并简要介绍如何将数组表示形式的图像数据显示为图像 """ import matplotlib.pyplot as plt from PIL import Image import numpy as np # 读入一幅彩色图片 img_path = 'demo.jpg' # 读入当前文件目录下的 demo.jpg img = Image.open(img_path) # 显示图片 plt.figure("Image") # 图像窗口名称 plt.imshow(img) plt.axis('on') # 关掉坐标轴为 off plt.title('image') # 图像题目 plt.show() # --------------------------------一般神经网络中对图像的处理(部分)-------------------------------------------------- # 打印图像的PTL存储形式 print(img) # 将图片转成numpy数组(这是图像处理过程中必然使用的一步),并将原来的int像素值改成float类型 img = np.asarray(img, dtype=float) print(img) # 打印numpy的存储形式 # 转换3通道图像的数组格式 : transpose (H, W, C) -> (C, H, W) img = img.transpose((2, 0, 1)) print(img) # 打印转换通道之后的存储形式 # ---------------------------------------------------------------------------------- # 讲过上面处理过后,通常得到一副图像的数组表示形式,如:[3, 375, 500] 分别表示图形的通道数、高、宽 # 但图像一般的存储格式为:[375, 500, 3] 及高、宽、通道数 # 所以要对数组形式做一定的改变才能正常显示 # 首先转换数据类型:float -> int img = np.asarray(img, dtype=int) # 然后转换存储格式 img = img.transpose((1, 2, 0)) # transpose (C, H, W) -> (H, W, C) # 之后便可正常显示图片 plt.imshow(img) # plt.show() 移到最后,防止下面存储图片时得到空白图 # 有些公布的开源神经网络代码中可能无法使用 matplotlib 输出显示图片,但可以直接将图片存储下来 # 存储图片 # 但是要注意,在存储图片之前,一定要保留住图片的信息,比如不能使用 plt.show() ,否则图片信息被输出,则会得到一张空白图 plt.savefig('{}_save.jpg'.format(img_path.split('.')[0])) plt.show()