顯示圖片
雖然 matplotlib 通常都是應用在繪製圖表的領域,但 matplotlib 的顯示圖表功能,也可以作為「顯示圖片」使用,這篇教學將會介紹 matplotlib 顯示圖片的做法。
- 本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
- 使用 Colab 操作需要連動 Google 雲端硬碟,請參考:連動 Google Drive
讀取並顯示圖片
要用 matplotlib 顯示圖片,要先透過 matplotlib.image 模組中的 imread() 方法讀取圖片,讀取後使用 imshow() 在圖表中繪製圖片,最後透過 plt.show() 顯示圖表。
imshow() 的參數可以進行圖片顏色的相關設定,但如果要調整顏色,通常會透過 Pillow 或 OpenCV 進行處理,相關參數說明參考:matplotlib.pyplot.imshow
import matplotlib.pyplot as plt
import matplotlib.image as img
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 如果是用 Colab 需要改變路徑
image = img.imread('mona.jpg') # 讀取圖片
plt.imshow(image) # 在圖表中繪製圖片
plt.show() # 顯示圖表
改變圖片顯示的尺寸
如果要改變圖片顯示的尺寸,可以透過修改圖表的尺寸來實現,下方程式碼執行後,會將圖表放大為 10x10 英吋,繪製在圖表裡的圖片就會跟著放大。
import matplotlib.pyplot as plt
import matplotlib.image as img
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks')
image = img.imread('mona.jpg')
plt.figure(figsize=(10,10)) # 改變圖表尺寸
plt.imshow(image)
plt.show()
同時顯示多張圖片
如果要同時顯示多張圖片,可透過「建立多個子圖表」的方式,在子圖表中顯示圖片。
import matplotlib.pyplot as plt
import matplotlib.image as img
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 如果是用 Colab 需要改變路徑
plt.figure(figsize=(10,10)) # 改變圖表尺寸
image = img.imread('mona.jpg')
plt.subplot(221) # 建立 2x2 子圖表的左上方圖表
plt.imshow(image) # 在子圖表中繪製圖片
image = img.imread('girl.jpg')
plt.subplot(222) # 建立 2x2 子圖表的右上方圖表
plt.imshow(image) # 在子圖表中繪製圖片
image = img.imread('meme.jpg')
plt.subplot(223) # 建立 2x2 子圖表的左下方圖表
plt.imshow(image) # 在子圖表中繪製圖片
image = img.imread('bg.jpg')
plt.subplot(224) # 建立 2x2 子圖表的右下方圖表
plt.imshow(image) # 在子圖表中繪製圖片
plt.show()
顯示 Pillow 處理過的圖片
matplotlib 的顯示圖片可以顯示 Pillow 處理後的圖片,下方程式碼執行後,會利用 Pillow 的 Image.open() 方法開啟圖片,使用 ImageEnhance.Brightness() 方法調整亮度,最後再透過 matplotlib 一次顯示四張不同亮度的圖片。
import matplotlib.pyplot as plt
import matplotlib.image as img
from PIL import Image, ImageEnhance
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 如果是用 Colab 需要改變路徑
plt.figure(figsize=(10,10))
img = Image.open("mona.jpg") # 開啟圖片
enhancer = ImageEnhance.Brightness(img) # 建立調整亮度的方法
plt.subplot(221)
plt.imshow(img) # 顯示原圖
plt.subplot(222)
img2 = enhancer.enhance(0.5) # 顯示亮度 x0.5 的圖片
plt.imshow(img2)
plt.subplot(223)
img3 = enhancer.enhance(1.5) # 顯示亮度 x1.5 的圖片
plt.imshow(img3)
plt.subplot(224)
img4 = enhancer.enhance(3) # 顯示亮度 x3 的圖片
plt.imshow(img4)
plt.show()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~