使用 matplotlib 顯示彩色圖像


詳細說明見代碼注釋

"""
介紹如何使用 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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM