Matplotlib imread en Python

Suraj Joshi 15 febrero 2024
Matplotlib imread en Python

El artículo explica cómo podemos leer un archivo de imagen en un array usando el método imread() del paquete Matplotlib.

matplotlib.pyplot.imread()

El matplotlib.pyplot.imread() lee una imagen de un archivo en un array.

Sintaxis

matplotlib.pyplot.imread(fname, format=None)

Aquí, fname representa el nombre del archivo de imagen que se va a leer, y format representa el formato del archivo de imagen. Si format=None la función extraerá el formato del nombre del archivo.

La función devuelve un array con la forma MxN para las imágenes en escala de grises, MxNx3 para las imágenes RGB, y MxNx4 para las imágenes RGBA, donde M es el ancho y N es el alto de la imagen.

Ejemplo: Leer imágenes usando la función matplotlib.pyplot.imread()

import numpy as np
import matplotlib.pyplot as plt

img_array = plt.imread("lena.png")
plt.imshow(img_array)
plt.title("Display Image read using imread()")
plt.axis("off")
plt.show()

Producción:

Leer las imágenes usando el método imread

Lee la imagen lena.png en el directorio de trabajo actual en un array usando el método imread() y luego muestra la imagen usando el método imshow().

Por defecto, tiene el eje X y el eje Y con marcas en la imagen mostrada. Para eliminar los ejes y las garrapatas, utilizamos la sentencia plt.axis('off'). Finalmente, usamos la función matplotlib.pyplot.show() para mostrar la imagen.

Podemos ver la forma del array de imágenes usando el atributo shape.

import matplotlib.pyplot as plt

img_array = plt.imread("lena.png")
print(img_array.shape)

Producción :

(330, 330, 3)

Imprime la forma de la imagen - (330, 330, 3), representando un array de imágenes tridimensionales de ancho como 330, alto como 330, y 3 canales.

Ejemplo: Recortar imágenes usando la función matplotlib.pyplot.imread()

Después de que matplotlib.pyplot.imread() lea una imagen en un array NumPy, podemos recortar la imagen indexando el array usando el operador :.

import matplotlib.pyplot as plt

img_array = plt.imread("lena.png")[50:300, 30:300]
plt.imshow(img_array)
plt.axis("off")
plt.title("Clipped Image")
plt.show()

Producción:

Recortar imágenes usando el método imread

Aquí, el método imread() lee la imagen completa en un array, y sólo seleccionamos los elementos de la posición 50 a la 300 en anchura y los elementos de la posición 30 a la 300 en altura y almacena el array indexado en img_array. Luego mostramos el array indexada usando la función imshow().

import matplotlib.pyplot as plt
import matplotlib.patches as patches

img_array = plt.imread("lena.png")

fig, ax = plt.subplots()
im = ax.imshow(img_array)
patch = patches.Circle((160, 160), radius=150, transform=ax.transData)
im.set_clip_path(patch)

ax.axis("off")
plt.show()

Producción:

Imágenes circulares usando el método imread

Muestra la imagen recortada con un parche circular. Aquí, recortamos la imagen usando un parche circular con el centro en (160, 160) y el radio como 150.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artículo relacionado - Matplotlib Images