Mostrar uma imagem em escala de cinzentos em Matplotlib

Suraj Joshi 15 fevereiro 2024
  1. matplotlib.pyplot.imshow() para Mostrar uma Imagem em Escala de Cinza em Matplotlib
  2. Exemplos: Matplotlib Mostrar imagem em escala de cinzentos
Mostrar 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:

Matplotlib mostrar imagem em escala de cinzentos

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:

Matplotlib mostra imagem em escala de cinzentos utilizando o módulo de imagem

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().

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Matplotlib Images