Comment puis-je obtenir la taille d'un côté des images avec PIL ou toute autre bibliothèque Python?
274
Comment puis-je obtenir la taille d'un côté des images avec PIL ou toute autre bibliothèque Python?
Réponses:
Selon la documentation .
la source
im.mode
. Puisque PIL est un peu cryptique, vous pouvez également utiliser numpy:numpy.array(im).shape
.shape
entraîne des résultats différents, car la hauteur est le premier du tableau 2D, puis la largeur. Par conséquentheight, width = np.array(im).shape
with
.np.array(im).shape
ne renvoie PAS le nombre de canaux, il renvoie plutôtheight
etwidth
!Vous pouvez utiliser Pillow ( Site Web , Documentation , GitHub , PyPI ). Pillow a la même interface que PIL, mais fonctionne avec Python 3.
Installation
Si vous n'avez pas de droits d'administrateur (sudo sur Debian), vous pouvez utiliser
D'autres notes concernant l'installation sont ici .
Code
La vitesse
Cela a nécessité 3,21 secondes pour 30336 images (JPG de 31x21 à 424x428, données d'entraînement de National Data Science Bowl sur Kaggle)
C'est probablement la raison la plus importante d'utiliser Pillow au lieu de quelque chose d'auto-écrit. Et vous devriez utiliser Pillow au lieu de PIL (imagerie python), car cela fonctionne avec Python 3.
Alternative n ° 1: Numpy (obsolète)
Je garde
scipy.ndimage.imread
car les informations sont toujours là, mais gardez à l'esprit:Alternative n ° 2: Pygame
la source
Image.open(filepath)
plus rapide que lacv2.imread(filepath)
méthode?Puisque
scipy
simread
est obsolète, utilisezimageio.imread
.pip install imageio
height, width, channels = imageio.imread(filepath).shape
la source
Ceci est un exemple complet de chargement d'image à partir d'une URL, de création avec PIL, d'impression de la taille et de redimensionnement ...
la source
Voici comment obtenir la taille de l'image à partir de l'URL donnée dans Python 3:
la source
Followings donne des dimensions ainsi que des canaux:
la source