詳細說明見代碼注釋
""" 介紹如何使用 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()
