Ridimensiona l'immagine in Python
- Usa il modulo opencv per ridimensionare le immagini in Python
- Usa il modulo scikit-image per ridimensionare le immagini in Python
- Crea una funzione definita dall’utente per ridimensionare le immagini in Python
In questo tutorial, discuteremo come ridimensionare un’immagine.
Essenzialmente, ridimensioneremo la dimensione dell’array numpy, che rappresenta un’immagine. Non esiste una funzionalità diretta nel modulo numpy per ottenere ciò. Non possiamo usare direttamente la funzione resize()
perché ignora l’asse e non applica interpolazione o estrapolazione.
Nota che dopo il ridimensionamento, possiamo esportare questo array ridimensionato e salvarlo come immagine. Questo è comune a tutti i metodi discussi di seguito
Usa il modulo opencv per ridimensionare le immagini in Python
Il modulo OpenCV è ampiamente utilizzato in Python per l’elaborazione delle immagini e la visione artificiale. Per ridimensionare un’immagine, leggeremo prima l’immagine usando la funzione imread()
e la ridimensioneremo usando la funzione resize()
come mostrato di seguito.
import cv2
import numpy as np
img = cv2.imread("filename.jpeg")
res = cv2.resize(img, dsize=(54, 140), interpolation=cv2.INTER_CUBIC)
imread()
restituisce un array che memorizza l’immagine. Lo ridimensioniamo con la funzione resize()
. Un aspetto importante qui è il parametro interpolation
, che essenzialmente dice come ridimensionare un’immagine. Esistono diversi modi per ridimensionare l’immagine come INTER_NEAREST
, INTER_LINEAR
e altro. Non esiste un modo migliore per selezionare questo parametro; differisce da situazione a situazione.
Usa il modulo scikit-image per ridimensionare le immagini in Python
Questo modulo è costruito sulla libreria numpy e ha la funzione resize()
, che può ridimensionare efficacemente le immagini. Può funzionare su una varietà di canali mentre si occupa di interpolazione, anti-aliasing, ecc.
Il codice seguente mostra come utilizzare questa funzione.
from skimage.transform import resize
import matplotlib.pyplot as plt
im = plt.imread("filename.jpeg")
res = resize(im, (140, 54))
Nota che usiamo la funzione matplotlib.pyplot.imread()
per leggere l’immagine nel metodo sopra. Può essere sostituito con qualsiasi metodo di tua preferenza.
Crea una funzione definita dall’utente per ridimensionare le immagini in Python
Possiamo anche creare la nostra funzione per ottenere il ridimensionamento in Python. Va notato che questo metodo è una funzione di ridimensionamento di base, indipendente da qualsiasi libreria, e non eseguirà interpolazione e anti-alias come faranno i metodi precedenti.
Il codice seguente mostra questa funzione.
import matplotlib.pyplot as plt
def scale(im, nR, nC):
number_rows = len(im) # source number of rows
number_columns = len(im[0]) # source number of columns
return [
[im[int(number_rows * r / nR)][int(number_columns * c / nC)] for c in range(nC)]
for r in range(nR)
]
im = plt.imread("filename.jpeg")
res = scale(im, 30, 30)
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn