Pythonis on olemas mitmeid raamatukogusid piltide töötlemiseks, näiteks OpenCV ja Pillow (PIL). Selles jaotises selgitatakse, kuidas saada pildi suurust (laius ja kõrgus) igaühe jaoks.
Saate pildi suuruse (laius ja kõrgus) tuplina, kasutades OpenCV puhul kuju ja Pillow (PIL) puhul suurust, kuid pange tähele, et mõlema järjekord on erinev.
Siin on esitatud järgmine teave.
- OpenCV
ndarray.shape
:Saada pildi suurus (laius, kõrgus)- Värviliste piltide puhul
- Hallikaalaliste (ühevärviliste) piltide puhul
- Pillow(PIL)
size
,width
,height
:Saada pildi suurus (laius, kõrgus)
Vt järgmist artiklit selle kohta, kuidas saada pildi suuruse (suuruse) asemel faili suurust (mahutavust).
- Seotud artiklid:Faili või kataloogi (kausta) suuruse saamine Pythonis
OpenCV: ndarray.shape: Saada pildi suurus (laius, kõrgus)
Kui pildifail laaditakse OpenCV-sse, käsitletakse seda kui NumPy massiivi ndarray ja pildi suuruse (laius ja kõrgus) saab teada atribuudist shape, mis näitab ndarray kuju.
Mitte ainult OpenCV-s, vaid ka siis, kui pildifail laaditakse Pillow'sse ja teisendatakse ndarray'ks, saadakse ndarray poolt kujutatud pildi suurus kuju abil.
Värviliste piltide puhul
Värviliste kujutiste puhul kasutatakse järgmist kolmemõõtmelist ndarray't.
- Rida (kõrgus)
- Rida (laius)
- Värv (3)
kuju on eespool nimetatud elementide tupel.
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'>
Iga väärtuse määramiseks muutujale, võtke tupel lahti järgmiselt.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Tupli lahtipakkimisel võib eespool nimetatu tavapäraselt määrata muutujaks väärtusi, mida edaspidi ei kasutata. Näiteks kui värvide arvu (kanalite arvu) ei kasutata, kasutatakse järgmist.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Seda saab kasutada ka sellisena, nagu see on, määrates selle indeksi (index) järgi ilma seda muutujale määramata.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Kui soovite seda tuplit saada, võite kasutada slice'i ja kirjutada järgmist: cv2.resize() jne. Kui soovite määrata argumenti suuruse järgi, kasutage seda.
print(im.shape[1::-1]) # (400, 225)
Hallikaalaliste (ühevärviliste) piltide puhul
Hallikaalaliste (ühevärviliste) kujutiste puhul kasutatakse järgmist kahemõõtmelist ndarray'd.
- Rida (kõrgus)
- Rida (laius)
Kuju on see tupel.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
Põhimõtteliselt sama, mis värviliste piltide puhul.
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
Kui soovite määrata muutujatele laiuse ja kõrguse, saate seda teha järgmiselt, olenemata sellest, kas pilt on värviline või halltooniline.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Kui soovite seda tuplit saada, võite kasutada viilusid ja kirjutada selle järgmiselt. Järgnevat kirjutamisviisi saab kasutada olenemata sellest, kas pilt on värviline või halltooniline.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL): size, width, height: Saada pildi suurus (laius, kõrgus)
Pildiobjektil, mis saadakse Pillow(PIL) abil pildi lugemisel, on järgmised atribuudid.
size
width
height
Suurus on järgmine tupel.(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
Saate ka laiuse ja kõrguse vastavalt atribuutidena.width
, height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Sama kehtib ka halltoonide (ühevärviliste) piltide puhul.
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