Se você também quiser saber o número de canais, deve usar im.mode. Como o PIL é um pouco enigmático, você também pode usar numpy: #numpy.array(im).shape
Alex Kreimer 17/17
9
Observe @AlexKreimer que o uso .shaperesulta em retornos diferentes, já que a altura é a primeira da matriz 2D e, em seguida, a largura. Portantoheight, width = np.array(im).shape
Jack Hales
Por favor use with.
Shital Shah
@AlexKreimer: np.array(im).shapenão retorna número de canais, que é bastante retornos heighte width!
Färid Alijani
@ FäridAlijani Com certeza, ele retorna a forma de um tensor, que (possivelmente) inclui o número de canais. Se você receber apenas 2 dims, provavelmente significa que o número de canais é 1.
Alex Kreimer
77
Você pode usar o Pillow ( site , documentação , GitHub , PyPI ). O Pillow possui a mesma interface do PIL, mas funciona com o Python 3.
Instalação
$ pip install Pillow
Se você não possui direitos de administrador (sudo no Debian), você pode usar
from PIL importImagewithImage.open(filepath)as img:
width, height = img.size
Rapidez
Foram necessários 3,21 segundos para imagens 30336 (JPGs de 31x21 a 424x428, dados de treinamento do National Data Science Bowl no Kaggle)
Esta é provavelmente a razão mais importante para usar o Pillow em vez de algo auto-escrito. E você deve usar Pillow em vez de PIL (imagem em python), porque funciona com o Python 3.
Alternativa 1: Numpy (descontinuado)
Eu mantenho scipy.ndimage.imreadcomo as informações ainda estão por aí, mas lembre-se:
imread está obsoleto! O imread foi descontinuado no SciPy 1.0.0 e [foi] removido no 1.2.0.
Veja como você obtém o tamanho da imagem a partir do URL fornecido no Python 3:
from PIL importImageimport urllib.request
from io importBytesIO
file =BytesIO(urllib.request.urlopen('http://getwallpapers.com/wallpaper/full/b/8/d/32803.jpg').read())
im =Image.open(file)
width, height = im.size
Respostas:
De acordo com a documentação .
fonte
im.mode
. Como o PIL é um pouco enigmático, você também pode usar numpy: #numpy.array(im).shape
.shape
resulta em retornos diferentes, já que a altura é a primeira da matriz 2D e, em seguida, a largura. Portantoheight, width = np.array(im).shape
with
.np.array(im).shape
não retorna número de canais, que é bastante retornosheight
ewidth
!Você pode usar o Pillow ( site , documentação , GitHub , PyPI ). O Pillow possui a mesma interface do PIL, mas funciona com o Python 3.
Instalação
Se você não possui direitos de administrador (sudo no Debian), você pode usar
Outras notas sobre a instalação estão aqui .
Código
Rapidez
Foram necessários 3,21 segundos para imagens 30336 (JPGs de 31x21 a 424x428, dados de treinamento do National Data Science Bowl no Kaggle)
Esta é provavelmente a razão mais importante para usar o Pillow em vez de algo auto-escrito. E você deve usar Pillow em vez de PIL (imagem em python), porque funciona com o Python 3.
Alternativa 1: Numpy (descontinuado)
Eu mantenho
scipy.ndimage.imread
como as informações ainda estão por aí, mas lembre-se:Alternativa # 2: Pygame
fonte
Image.open(filepath)
mais rápido que ocv2.imread(filepath)
método?Como
scipy
'simread
está obsoleto, useimageio.imread
.pip install imageio
height, width, channels = imageio.imread(filepath).shape
fonte
Este é um exemplo completo de carregamento de imagem do URL, criação com PIL, impressão do tamanho e redimensionamento ...
fonte
Veja como você obtém o tamanho da imagem a partir do URL fornecido no Python 3:
fonte
A seguir, são apresentadas as dimensões e os canais:
fonte