В Python есть несколько библиотек для работы с изображениями, например OpenCV и Pillow (PIL). В этом разделе объясняется, как получить размер изображения (ширину и высоту) для каждой из них.
Вы можете получить размер изображения (ширину и высоту) в виде кортежа, используя shape для OpenCV и size для Pillow (PIL), но обратите внимание, что порядок каждого из них отличается.
Здесь представлена следующая информация.
- OpenCV
ndarray.shape
:Получение размера изображения (ширина, высота)- Для цветных изображений
- Для полутоновых (монохромных) изображений
- Pillow(PIL)
size
,width
,height
:Получение размера изображения (ширина, высота)
См. следующую статью о том, как получить размер (емкость) файла вместо размера (размера) изображения.
- Похожие статьи:Получение размера файла или каталога (папки) в Python
OpenCV: ndarray.shape: Получение размера изображения (ширина, высота)
Когда файл изображения загружается в OpenCV, он рассматривается как массив NumPy ndarray, а размер изображения (ширина и высота) может быть получен из атрибута shape, который указывает на форму ndarray.
Не только в OpenCV, но и когда файл изображения загружается в Pillow и преобразуется в ndarray, размер изображения, представленного ndarray, получается с помощью shape.
Для цветных изображений
В случае цветных изображений используется следующий трехмерный ndarray.
- Ряд (высота)
- Ряд (ширина)
- Цвет (3)
форма — это кортеж из вышеперечисленных элементов.
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'>
Чтобы присвоить каждое значение переменной, распакуйте кортеж следующим образом.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
При распаковке кортежа можно условно назначить в качестве переменной значения, которые в дальнейшем не будут использоваться. Например, если количество цветов (количество каналов) не используется, то используется следующее.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Его также можно использовать как есть, указав его по индексу (index) без присвоения переменной.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Если вы хотите получить этот кортеж, вы можете использовать slice и написать следующее: cv2.resize() и т.д. Если вы хотите указать аргумент по размеру, используйте это.
print(im.shape[1::-1]) # (400, 225)
Для полутоновых (монохромных) изображений
В случае с полутоновыми (монохромными) изображениями используется следующий двумерный ndarray.
- Ряд (высота)
- Ряд (ширина)
Форма будет представлять собой этот кортеж.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
В принципе, то же самое, что и для цветных изображений.
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
Если вы хотите присвоить ширину и высоту переменным, вы можете сделать это следующим образом, независимо от того, является ли изображение цветным или полутоновым.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Если вы хотите получить этот кортеж, вы можете использовать slices и записать его следующим образом. Следующий стиль записи можно использовать независимо от того, является ли изображение цветным или полутоновым.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL): size, width, height: Получение размера изображения (ширина, высота)
Объект изображения, полученный при чтении изображения с помощью Pillow(PIL), имеет следующие атрибуты.
size
width
height
Размер представляет собой следующий кортеж.(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
Вы также можете получить ширину и высоту соответственно в качестве атрибутов.width
, height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
То же самое справедливо и для полутоновых (монохромных) изображений.
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