Cómo mostrar una imagen en escala de grises en Matplotlib

Suraj Joshi 30 enero 2023
  1. matplotlib.pyplot.imshow() para mostrar una imagen en escala de grises en Matplotlib
  2. Ejemplos: La imagen de la pantalla Matplotlib en escala de grises
Cómo mostrar una imagen en escala de grises en Matplotlib

Para mostrar una imagen en escala de grises usando Matplotlib, usamos el matplotlib.pyplot.imshow con los parámetros cmap en 'gray', vmin en 0 y vmax en 255.

matplotlib.pyplot.imshow() para mostrar una imagen en escala de grises en 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)

Ejemplos: La imagen de la pantalla Matplotlib en escala de grises

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:

Imagen en escala de grises de la pantalla Matplotlib

Este método lee la imagen lena.jpg, que es una imagen RGB que utiliza la función imread() del módulo matplotlib.image. Para mostrar la imagen en escala de grises, sólo necesitamos un canal de color. Por lo tanto, para el siguiente paso, sólo toma un único canal de color y muestra la imagen usando el método plt.imshow() con cmap en 'gray', vmin en 0, y vmax en 255.

Finalmente, usamos el método show() para mostrar una ventana que muestra la imagen en escala de grises. Para ejecutar el script anterior, debemos tener lena.jpg en nuestro directorio de trabajo actual.

Tomar un solo canal de color no es una forma apropiada de convertir imágenes RGB en imágenes en escala de grises porque tenemos algoritmos específicos para hacer la conversión más eficiente. Estos algoritmos están implementados en casi todas las librerías populares de procesamiento de imágenes disponibles. A continuación, demostramos un ejemplo usando la 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 muestra la imagen en escala de grises usando el módulo de imagen

Aquí, leemos la imagen lena.jpg en nuestro directorio de trabajo actual usando la función open() y luego convertimos la imagen a escala de grises usando el método convert() con 'L' como argumento. Después de eso, convertimos la imagen en escala de grises en un array NumPy y mostramos la imagen usando el método imshow().

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artículo relacionado - Matplotlib Images