У 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