У Python є кілька бібліотек для обробки зображень, наприклад OpenCV і Pillow (PIL). У цьому розділі пояснюється, як отримати розмір зображення (ширину та висоту) для кожного з них.
Ви можете отримати розмір зображення (ширину та висоту) як кортеж, використовуючи форму для OpenCV і розмір для подушки (PIL), але зверніть увагу, що порядок кожного різний.
Тут наведено наступну інформацію.
- OpenCV
ndarray.shape
:Отримати розмір зображення (ширина, висота)- Для кольорових зображень
- Для сірих (монохромних) зображень
- Pillow(PIL)
size
,width
,height
:Отримати розмір зображення (ширина, висота)
Дивіться наступну статтю про те, як отримати розмір (ємність) файлу замість розміру (розміру) зображення.
- Пов’язані статті:Отримання розміру файлу або каталогу (папки) в Python
OpenCV:ndarray.shape:Отримати розмір зображення (ширина, висота)
Коли файл зображення завантажується в OpenCV, він розглядається як масив NumPy ndarray, а розмір зображення (ширина і висота) можна отримати з атрибута shape, який вказує на форму ndarray.
Не тільки в OpenCV, а й коли файл зображення завантажується в Pillow і перетворюється в ndarray, розмір зображення, представленого ndarray, отримується за допомогою форми.
Для кольорових зображень
У разі кольорових зображень використовується наступний тривимірний 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
Його також можна використовувати як є, вказавши його за індексом (індексом), не призначаючи його змінній.
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)
Якщо ви хочете отримати цей кортеж, ви можете використовувати зрізи і записати його так. Наведений нижче стиль написання може використовуватися незалежно від того, кольорове зображення чи відтінки сірого.
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