Pythonissa on useita kirjastoja kuvien käsittelyyn, kuten OpenCV ja Pillow (PIL). Tässä jaksossa kerrotaan, miten saat kuvan koon (leveys ja korkeus) kustakin kirjastosta.
Voit saada kuvan koon (leveys ja korkeus) tuplina käyttämällä OpenCV:n tapauksessa muotoa (shape) ja Pillowin (PIL) tapauksessa kokoa (size), mutta huomaa, että niiden järjestys on erilainen.
Seuraavat tiedot annetaan tässä.
- OpenCV
ndarray.shape
:Hae kuvan koko (leveys, korkeus)- Värikuvia varten
- Harmaasävykuvia (yksivärikuvia) varten
- Pillow(PIL)
size
,width
,height
:Hae kuvan koko (leveys, korkeus)
Katso seuraavasta artikkelista, miten saat tiedoston koon (kapasiteetin) kuvan koon (koon) sijasta.
- Aiheeseen liittyvät artikkelit:Tiedoston tai hakemiston (kansion) koon saaminen Pythonissa
OpenCV: ndarray.shape: Hae kuvan koko (leveys, korkeus)
Kun kuvatiedosto ladataan OpenCV:hen, sitä käsitellään NumPy-massana ndarray, ja kuvan koko (leveys ja korkeus) saadaan attribuutista shape, joka ilmoittaa ndarray-massan muodon.
OpenCV:n lisäksi myös silloin, kun kuvatiedosto ladataan Pillow-ohjelmaan ja muunnetaan ndarray-joukoksi, ndarray-joukon esittämän kuvan koko saadaan käyttämällä muotoa.
Värikuvia varten
Värikuvien tapauksessa käytetään seuraavaa kolmiulotteista ndarray-määritystä.
- Rivi (korkeus)
- Rivi (leveys)
- Väri (3)
shape on edellä mainittujen elementtien muodostama tupleeri.
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'>
Kun haluat määrittää kunkin arvon muuttujalle, purkaa tuple seuraavasti.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Kun tuplea puretaan, edellä mainittu voidaan perinteisesti määrittää muuttujaksi arvoille, joita ei käytetä sen jälkeen. Jos esimerkiksi värien määrää (kanavien määrää) ei käytetä, käytetään seuraavaa.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Sitä voidaan käyttää myös sellaisenaan määrittelemällä se indeksillä (index) osoittamatta sitä muuttujaan.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Jos haluat saada tämän tuplan, voit käyttää slicea ja kirjoittaa seuraavasti: cv2.resize() jne. Jos haluat määrittää argumentin koon mukaan, käytä tätä.
print(im.shape[1::-1]) # (400, 225)
Harmaasävykuvia (yksivärikuvia) varten
Harmaasävyisten (yksiväristen) kuvien tapauksessa käytetään seuraavaa kaksiulotteista ndar-määritystä.
- Rivi (korkeus)
- Rivi (leveys)
Muoto on tämä tuple.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
Periaatteessa sama kuin värikuville.
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
Jos haluat määrittää leveyden ja korkeuden muuttujille, voit tehdä sen seuraavasti riippumatta siitä, onko kuva väri- vai harmaasävykuva.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Jos haluat saada tämän tuplen, voit käyttää viipaleita ja kirjoittaa sen seuraavasti. Seuraavaa kirjoitustapaa voidaan käyttää riippumatta siitä, onko kuva väri- vai harmaasävykuva.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL): size, width, height: Hae kuvan koko (leveys, korkeus)
Kuvaobjektilla, joka saadaan lukemalla kuva Pillow(PIL)-ohjelmalla, on seuraavat ominaisuudet.
size
width
height
Koko on seuraava 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
Voit myös saada leveyden ja korkeuden ominaisuuksina.width
, height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Sama pätee harmaasävykuviin (yksivärikuviin).
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