A Pythonban számos könyvtár létezik képek kezelésére, például az OpenCV és a Pillow (PIL). Ez a szakasz elmagyarázza, hogyan kaphatjuk meg a kép méretét (szélesség és magasság) mindegyikük esetében.
A kép méretét (szélesség és magasság) az OpenCV esetében a shape, a Pillow (PIL) esetében pedig a size segítségével kaphatja meg, de vegye figyelembe, hogy a sorrendjük eltérő.
A következő információk itt találhatók.
- OpenCV
ndarray.shape
:A kép méretének lekérdezése (szélesség, magasság)- Színes képek esetén
- Szürkeárnyalatos (monokróm) képek esetén
- Pillow(PIL)
size
,width
,height
:A kép méretének lekérdezése (szélesség, magasság)
Lásd a következő cikket arról, hogyan lehet a kép mérete (mérete) helyett a fájl méretét (kapacitását) megtudni.
- Kapcsolódó cikkek:Egy fájl vagy könyvtár (mappa) méretének megismerése Pythonban
OpenCV: ndarray.shape: A kép méretének lekérdezése (szélesség, magasság)
Amikor egy képfájlt betölt az OpenCV, azt egy NumPy ndarray tömbként kezeli, és a kép mérete (szélessége és magassága) a shape attribútumból kapható, amely az ndarray alakját jelzi.
Nemcsak az OpenCV-ben, hanem akkor is, amikor egy képfájlt betöltünk a Pillow-ban és ndarray-be konvertálunk, az ndarray által reprezentált kép méretét a shape segítségével kapjuk meg.
Színes képek esetén
Színes képek esetén a következő háromdimenziós ndarray-t használjuk.
- Sor (magasság)
- Sor (szélesség)
- Szín (3)
shape a fenti elemekből álló halmaz.
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'>
Az egyes értékek változóhoz rendeléséhez csomagolja ki a tuple-t a következőképpen.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Egy tuple kicsomagolásakor a fentieket konvencionálisan változónak lehet rendelni olyan értékekhez, amelyeket a későbbiekben nem fogunk használni. Például, ha a színek számát (csatornák számát) nem használjuk, akkor a következőt használjuk.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Úgy is használható, ahogy van, ha indexszel (index) adjuk meg, anélkül, hogy egy változóhoz rendelnénk.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Ha ezt a tuple-t akarod megkapni, használhatod a slice-t, és a következőket írhatod: cv2.resize(), stb. Ha az argumentumot méret szerint akarod megadni, használd ezt.
print(im.shape[1::-1]) # (400, 225)
Szürkeárnyalatos (monokróm) képek esetén
Szürkeárnyalatos (monokróm) képek esetén a következő kétdimenziós ndarray-t használjuk.
- Sor (magasság)
- Sor (szélesség)
A shape ez a tuple lesz.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
Alapvetően ugyanaz, mint a színes képek esetében.
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
Ha a szélességet és a magasságot változókhoz szeretné rendelni, akkor ezt a következőképpen teheti meg, függetlenül attól, hogy a kép színes vagy szürkeárnyalatos.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Ha ezt a tuple-t szeretné megkapni, használhatja a szeleteket, és írja le a következőképpen. A következő írásmód használható, akár színes, akár szürkeárnyalatos a kép.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL): size, width, height: A kép méretének lekérdezése (szélesség, magasság)
A Pillow(PIL) kép beolvasásával kapott képobjektum a következő attribútumokkal rendelkezik.
size
width
height
A méret a következő tuple.(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
A szélességet és a magasságot is megkaphatja attribútumként.width
, height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Ugyanez igaz a szürkeárnyalatos (monokróm) képekre is.
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