Risposte:
from PIL import Image
im = Image.open('whatever.png')
width, height = im.size
Secondo la documentazione .
im.mode
. Poiché PIL è un po 'enigmatico, puoi anche usare il numpy:numpy.array(im).shape
.shape
risultati restituisce risultati diversi poiché l'altezza è il primo dell'array 2d, quindi larghezza. Pertantoheight, width = np.array(im).shape
with
.
np.array(im).shape
NON restituisce il numero di canali, piuttosto restituisce height
e width
!
È possibile utilizzare Pillow ( sito Web , documentazione , GitHub , PyPI ). Pillow ha la stessa interfaccia di PIL, ma funziona con Python 3.
$ pip install Pillow
Se non hai i diritti di amministratore (sudo su Debian), puoi usare
$ pip install --user Pillow
Altre note relative all'installazione sono qui .
from PIL import Image
with Image.open(filepath) as img:
width, height = img.size
Ciò ha richiesto 3,21 secondi per 30336 immagini (JPG da 31x21 a 424x428, dati di allenamento da National Data Science Bowl on Kaggle)
Questo è probabilmente il motivo più importante per usare Pillow invece di qualcosa di auto-scritto. E dovresti usare Pillow invece di PIL (python-imaging), perché funziona con Python 3.
Continuo scipy.ndimage.imread
perché le informazioni sono ancora là fuori, ma tenere a mente:
imread è deprecato! imread è deprecato in SciPy 1.0.0 e [è stato rimosso in 1.2.0.
import scipy.ndimage
height, width, channels = scipy.ndimage.imread(filepath).shape
import pygame
img = pygame.image.load(filepath)
width = img.get_width()
height = img.get_height()
Image.open(filepath)
più veloce del cv2.imread(filepath)
metodo?
Dal momento scipy
che imread
è deprecato, utilizzare imageio.imread
.
pip install imageio
height, width, channels = imageio.imread(filepath).shape
Questo è un esempio completo di caricamento dell'immagine dall'URL, creazione con PIL, stampa delle dimensioni e ridimensionamento ...
import requests
h = { 'User-Agent': 'Neo'}
r = requests.get("https://images.freeimages.com/images/large-previews/85c/football-1442407.jpg", headers=h)
from PIL import Image
from io import BytesIO
# create image from binary content
i = Image.open(BytesIO(r.content))
width, height = i.size
print(width, height)
i = i.resize((100,100))
display(i)
Ecco come ottenere le dimensioni dell'immagine dall'URL indicato in Python 3:
from PIL import Image
import urllib.request
from io import BytesIO
file = BytesIO(urllib.request.urlopen('http://getwallpapers.com/wallpaper/full/b/8/d/32803.jpg').read())
im = Image.open(file)
width, height = im.size
Di seguito vengono fornite le dimensioni e i canali:
import numpy as np
from PIL import Image
with Image.open(filepath) as img:
shape = np.array(img).shape