如何在 Matplotlib 中以灰度顯示影象

Suraj Joshi 2023年1月30日 2020年11月7日
  1. matplotlib.pyplot.imshow()
  2. 示例。Matplotlib 以灰度顯示影象
如何在 Matplotlib 中以灰度顯示影象

要使用 Matplotlib 顯示灰度影象,我們使用 matplotlib.pyplot.imshow(),引數 cmap 設定為'grayvmin 設定為 0vmax 設定為 255,預設情況下 cmapvminvmax 的值設定為 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 顯示灰度影象

本方法使用 matplotlib.image 模組中的 imread() 函式讀取影象 lena.jpg,它是一個 RGB 影象。要把影象顯示為灰度,我們只需要一個顏色通道。所以下一步,只需要一個顏色通道,使用 plt.imshow() 方法顯示影象,cmap 設定為'grayvmin 設定為 0vmax 設定為 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()

輸出:

Matplotlib 使用影象模組以灰度顯示影象

在這裡,我們使用 open() 函式讀取當前工作目錄中的影象 lena.jpg,然後使用 convert() 方法以'L'為引數將影象轉換為灰度影象。之後,我們將灰度影象轉換為 NumPy 陣列,並使用 imshow() 方法顯示影象。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相關文章 - Matplotlib Images