En Python, il existe plusieurs bibliothèques pour manipuler les images, comme OpenCV et Pillow (PIL). Cette section explique comment obtenir la taille de l'image (largeur et hauteur) pour chacune d'entre elles.
Vous pouvez obtenir la taille de l'image (largeur et hauteur) sous forme de tuple en utilisant shape pour OpenCV et size pour Pillow (PIL), mais notez que l'ordre de chacun est différent.
Les informations suivantes sont fournies ici.
- OpenCV
ndarray.shape
:Obtenir la taille de l'image (largeur, hauteur)- Pour les images en couleur
- Pour les images en niveaux de gris (monochromes)
- Pillow(PIL)
size
,width
,height
:Obtenir la taille de l'image (largeur, hauteur)
Consultez l'article suivant pour savoir comment obtenir la taille (capacité) d'un fichier au lieu de la taille (dimension) de l'image.
- Articles connexes :Obtenir la taille d'un fichier ou d'un répertoire (dossier) en Python
OpenCV: ndarray.shape: Obtenir la taille de l'image (largeur, hauteur)
Lorsqu'un fichier image est chargé dans OpenCV, il est traité comme un tableau NumPy ndarray, et la taille de l'image (largeur et hauteur) peut être obtenue à partir de l'attribut shape, qui indique la forme du ndarray.
Non seulement dans OpenCV, mais aussi lorsqu'un fichier image est chargé dans Pillow et converti en un ndarray, la taille de l'image représentée par le ndarray est obtenue en utilisant shape.
Pour les images en couleur
Dans le cas des images en couleur, le tableau tridimensionnel suivant est utilisé.
- Rangée (hauteur)
- Rangée (largeur)
- Couleur (3)
shape est un tuple des éléments ci-dessus.
import cv2 im = cv2.imread('data/src/lena.jpg') print(type(im)) # <class 'numpy.ndarray'> print(im.shape) print(type(im.shape)) # (225, 400, 3) # <class 'tuple'>
Pour affecter chaque valeur à une variable, décompressez le tuple comme suit.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Lors du dépaquetage d'un tuple, ce qui précède peut être conventionnellement attribué comme variable pour les valeurs qui ne seront pas utilisées par la suite. Par exemple, si le nombre de couleurs (nombre de canaux) n'est pas utilisé, on utilise ce qui suit.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Il peut également être utilisé tel quel en le spécifiant par indice (index) sans l'assigner à une variable.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Si vous voulez obtenir ce tuple, vous pouvez utiliser slice et écrire ce qui suit : cv2.resize(), etc. Si vous voulez spécifier l'argument par taille, utilisez ceci.
print(im.shape[1::-1]) # (400, 225)
Pour les images en niveaux de gris (monochromes)
Dans le cas d'images en niveaux de gris (monochromes), le tableau bidimensionnel suivant est utilisé.
- Rangée (hauteur)
- Rangée (largeur)
La forme sera ce tuple.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
En principe, c'est la même chose que pour les images en couleur.
h, w = im_gray.shape print('width: ', w) print('height:', h) # width: 400 # height: 225 print('width: ', im_gray.shape[1]) print('height:', im_gray.shape[0]) # width: 400 # height: 225
Si vous voulez attribuer la largeur et la hauteur à des variables, vous pouvez le faire comme suit, que l'image soit en couleur ou en niveaux de gris.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Si vous voulez obtenir ce tuple, vous pouvez utiliser des tranches et l'écrire comme suit. Le style d'écriture suivant peut être utilisé que l'image soit en couleur ou en niveaux de gris.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL): size, width, height: Obtenir la taille de l'image (largeur, hauteur)
L'objet image obtenu par lecture d'une image avec Pillow(PIL) a les attributs suivants.
size
width
height
La taille est le tuple suivant.(width, height)
from PIL import Image im = Image.open('data/src/lena.jpg') print(im.size) print(type(im.size)) # (400, 225) # <class 'tuple'> w, h = im.size print('width: ', w) print('height:', h) # width: 400 # height: 225
Vous pouvez également obtenir la largeur et la hauteur respectivement comme attributs.width
, height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Il en va de même pour les images en niveaux de gris (monochromes).
im_gray = Image.open('data/src/lena.jpg').convert('L') print(im.size) print('width: ', im.width) print('height:', im.height) # (400, 225) # width: 400 # height: 225