Redimensionner l'image en Python
- Utilisez le module opencv pour redimensionner les images en Python
- Utilisez le module scikit-image pour redimensionner des images en Python
- Créer une fonction définie par l’utilisateur pour redimensionner les images 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)
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