Kuvan koon (leveys ja korkeus) saaminen Pythonilla, OpenCV:llä ja Pillow(PIL) -ohjelmalla.

liiketoiminta

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.

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
Copied title and URL