HOWTO · Matplotlib
Mostrar uma imagem em escala de cinzentos em Matplotlib
Este artigo introduz como exibir uma imagem em escala de cinzentos em Matplotlib.
Para mostrar uma imagem em escala de cinzentos em Matplotlib, utilizamos o matplotlib.pyplot.imshow()com parâmetros cmap definidos para 'gray', vmin definidos para 0 e vmax definidos para 255.Por defeito o valor de cmap, vmin e vmax está definido para None.
matplotlib.pyplot.imshow() para Mostrar uma Imagem em Escala de Cinza em Matplotlib
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)
Exemplos: Matplotlib Mostrar imagem em escala de cinzentos
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()
Resultado:

Este método lê a imagem lena.jpg, que é uma imagem RGB utilizando a função imread() do módulo matplotlib.image. Para exibir a imagem como escala de cinzentos, só precisamos de um canal de cor. Por isso, para o passo seguinte, basta tomar um único canal de cor e mostrar a imagem utilizando o método plt.imshow()com cmap definido para 'gray', vmin definido para 0, e vmax definido para 255.
Finalmente, utilizamos o método show() para mostrar uma janela mostrando a imagem em escala de cinzentos. Para executar o script acima, temos de ter lena.jpg no nosso directório de trabalho actual.
Tomar apenas um canal de cor não é uma forma apropriada de converter imagens RGB em imagens em escala de cinzentos, porque temos algoritmos específicos para tornar a conversão mais eficiente. Estes algoritmos são implementados em quase todas as bibliotecas populares de processamento de imagem disponíveis. Abaixo, demonstramos um exemplo utilizando o 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()
Resultado:

Aqui, lemos a imagem lena.jpg no nosso directório de trabalho actual utilizando a função open() e depois convertemos a imagem para escala de cinzentos utilizando o método convert() com 'L' como argumento. Depois disso, convertemos a imagem em escala de cinzentos num array NumPy e exibimos a imagem utilizando o método imshow().