如何在 Matplotlib 中以灰度顯示影象
Suraj Joshi
2023年1月30日
2020年11月7日
要使用 Matplotlib
顯示灰度影象,我們使用 matplotlib.pyplot.imshow()
,引數 cmap
設定為'gray
,vmin
設定為 0
,vmax
設定為 255
,預設情況下 cmap
、vmin
和 vmax
的值設定為 None
。
matplotlib.pyplot.imshow()
matplotlib.pyplot.imshow(X,
cmap=None,
norm=None,
aspect=None,
interpolation=None,
alpha=None,
vmin=None,
vmax=None,
origin=None,
extent=None,
shape=<deprecated parameter>,
filternorm=1,
filterrad=4.0,
imlim=<deprecated parameter>,
resample=None,
url=None,
*,
data=None,
**kwargs)
示例。Matplotlib 以灰度顯示影象
import matplotlib.pyplot as plt
import matplotlib.image as img
image = img.imread('lena.jpg')
plt.imshow(image[:,:,1], cmap='gray', vmin = 0, vmax = 255,interpolation='none')
plt.show()
輸出:
本方法使用 matplotlib.image
模組中的 imread()
函式讀取影象 lena.jpg
,它是一個 RGB 影象。要把影象顯示為灰度,我們只需要一個顏色通道。所以下一步,只需要一個顏色通道,使用 plt.imshow()
方法顯示影象,cmap
設定為'gray
,vmin
設定為 0
,vmax
設定為 255
。
最後,我們使用 show()
方法顯示一個視窗,以灰度顯示影象。要執行上面的指令碼,我們必須在當前工作目錄下有 lena.jpg
。
只取一個顏色通道並不是將 RGB 影象轉換為灰度影象的合適方式,因為我們有特定的演算法來提高轉換效率。這些演算法幾乎在所有流行的影象處理庫中都可以實現。下面,演示一個使用 PIL
的示例。
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
image=Image.open('lena.jpg')
gray_image=image.convert('L')
gray_image_array=np.asarray(gray_image)
plt.imshow(gray_image_array,cmap='gray', vmin = 0, vmax = 255)
plt.show()
輸出:
在這裡,我們使用 open()
函式讀取當前工作目錄中的影象 lena.jpg
,然後使用 convert()
方法以'L'
為引數將影象轉換為灰度影象。之後,我們將灰度影象轉換為 NumPy 陣列,並使用 imshow()
方法顯示影象。
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn