Ridimensiona l'immagine in Python

Manav Narula 18 luglio 2021
  1. Usa il modulo opencv per ridimensionare le immagini in Python
  2. Usa il modulo scikit-image per ridimensionare le immagini in Python
  3. Crea una funzione definita dall’utente per ridimensionare le immagini in Python
Ridimensiona l'immagine 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)
Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

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

Articolo correlato - Python Image