Redimensionner l'image en Python

Manav Narula 30 janvier 2023
  1. Utilisez le module opencv pour redimensionner les images en Python
  2. Utilisez le module scikit-image pour redimensionner des images en Python
  3. Créer une fonction définie par l’utilisateur pour redimensionner les images en Python
Redimensionner l'image en Python

Dans ce didacticiel, nous verrons comment redimensionner une image.

Essentiellement, nous redimensionnerons la taille du tableau numpy, qui représente une image. Il n’y a pas de fonctionnalité directe dans le module numpy pour y parvenir. Nous ne pouvons pas utiliser directement la fonction resize() car elle ne tient pas compte de l’axe et n’applique ni interpolation ni extrapolation.

Notez qu’après le redimensionnement, nous pouvons exporter ce tableau redimensionné et l’enregistrer en tant qu’image. Ceci est commun à toutes les méthodes décrites ci-dessous

Utilisez le module opencv pour redimensionner les images en Python

Le module OpenCV est largement utilisé en Python pour le traitement d’images et la vision par ordinateur. Pour redimensionner une image, nous allons d’abord lire l’image en utilisant la fonction imread() et la redimensionner en utilisant la fonction resize() comme indiqué ci-dessous.

import cv2
import numpy as np

img = cv2.imread("filename.jpeg")
res = cv2.resize(img, dsize=(54, 140), interpolation=cv2.INTER_CUBIC)

imread() renvoie un tableau qui stocke l’image. Nous le redimensionnons avec la fonction resize(). Un aspect important ici est le paramètre interpolation, qui indique essentiellement comment redimensionner une image. Il existe plusieurs façons de redimensionner l’image comme INTER_NEAREST, INTER_LINEAR, etc. Il n’y a pas de meilleure façon de sélectionner ce paramètre; il diffère d’une situation à l’autre.

Utilisez le module scikit-image pour redimensionner des images en Python

Ce module est construit sur la bibliothèque numpy et possède la fonction resize(), qui permet de redimensionner efficacement les images. Il peut fonctionner sur une variété de canaux tout en prenant en charge l’interpolation, l’anti-aliasing, etc.

Le code suivant montre comment utiliser cette fonction.

from skimage.transform import resize
import matplotlib.pyplot as plt

im = plt.imread("filename.jpeg")
res = resize(im, (140, 54))

Notez que nous utilisons la fonction matplotlib.pyplot.imread() pour lire l’image dans la méthode ci-dessus. Il peut être remplacé par n’importe quelle méthode de votre choix.

Créer une fonction définie par l’utilisateur pour redimensionner les images en Python

Nous pouvons également créer notre propre fonction pour réaliser le redimensionnement en Python. Il convient de noter que cette méthode est une fonction de redimensionnement de base, indépendante de toute bibliothèque, et n’effectuera pas d’interpolation, d’anti-aliasing comme le feront les méthodes ci-dessus.

Le code suivant illustre cette fonction.

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)
Auteur: 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

Article connexe - Python Image