Matplotlib imread in Python

Suraj Joshi 15 febbraio 2024
Matplotlib imread in Python

L’articolo spiega come leggere un file immagine in un array usando il metodo imread() dal pacchetto Matplotlib.

matplotlib.pyplot.imread()

matplotlib.pyplot.imread() legge un’immagine da un file in un array.

Sintassi

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

Qui, fname rappresenta il nome del file immagine da leggere e format rappresenta il formato del file immagine. Se format=None la funzione estrarrà il formato dal nome del file.

La funzione restituisce un array con la forma MxN per immagini in scala di grigi, MxNx3 per immagini RGB e MxNx4 per immagini RGBA, dove M è la larghezza e N è l’altezza dell’immagine.

Esempio: leggere le immagini utilizzando la funzione 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()

Produzione:

Leggere le immagini utilizzando il metodo imread

Legge l’immagine lena.png nella directory di lavoro corrente in un array usando il metodo imread() e poi mostra l’immagine usando il metodo imshow().

Per impostazione predefinita, ha Asse X e Asse Y con segni di spunta nell’immagine visualizzata. Per rimuovere gli assi e le tacche, usiamo l’istruzione plt.axis('off'). Infine, usiamo la funzione matplotlib.pyplot.show() per mostrare l’immagine.

Possiamo visualizzare la forma dell’array di immagini utilizzando l’attributo shape.

import matplotlib.pyplot as plt

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

Produzione:

(330, 330, 3)

Stampa la forma dell’immagine - (330, 330, 3), che rappresenta un array di immagini tridimensionale di larghezza 330, altezza 330 e 3 canali.

Esempio: ritagliare immagini utilizzando la funzione matplotlib.pyplot.imread()

Dopo che matplotlib.pyplot.imread() ha letto un’immagine in un array NumPy, possiamo ritagliare l’immagine indicizzando l’array usando l’operatore :.

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

Produzione:

Ritaglia le immagini utilizzando il metodo imread

Qui, il metodo imread() legge l’intera immagine in un array, selezioniamo solo gli elementi dalla posizione 50 alla 300 in larghezza e gli elementi dalla posizione 30 alla 300 in altezza e memorizziamo l’array indicizzato in img_array. Quindi visualizziamo l’array indicizzato usando la funzione 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()

Produzione:

Immagini circolari utilizzando il metodo imread

Visualizza l’immagine ritagliata utilizzando una toppa circolare. Qui, ritagliamo l’immagine usando una toppa circolare con il centro a (160, 160) e il raggio a 150.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Matplotlib Images