Kupata saizi ya picha (upana na urefu) na Python, OpenCV na Pillow(PIL)

Biashara

Katika Python kuna maktaba kadhaa za kushughulikia picha, kama vile OpenCV na Pillow (PIL). Sehemu hii inaelezea jinsi ya kupata ukubwa wa picha (upana na urefu) kwa kila mmoja wao.

Unaweza kupata saizi ya picha (upana na urefu) kama nakala kwa kutumia umbo la OpenCV na saizi ya Pillow (PIL), lakini kumbuka kuwa mpangilio wa kila moja ni tofauti.

Habari ifuatayo imetolewa hapa.

  • OpenCV
    • ndarray.shape:Pata saizi ya picha (upana, urefu)
      • Kwa picha za rangi
      • Kwa picha za kijivu (monochrome).
  • Pillow(PIL)
    • size,width,height:Pata saizi ya picha (upana, urefu)

Tazama nakala ifuatayo ya jinsi ya kupata saizi (uwezo) wa faili badala ya saizi ya picha (ukubwa).

OpenCV:ndarray.shape:Pata saizi ya picha (upana, urefu)

Wakati faili ya picha imepakiwa katika OpenCV, inachukuliwa kama safu ya NumPy, na saizi ya picha (upana na urefu) inaweza kupatikana kutoka kwa umbo la sifa, ambalo linaonyesha umbo la ndarray.

Sio tu kwenye OpenCV, lakini pia faili ya picha inapopakiwa kwenye Pillow na kubadilishwa kuwa ndarray, saizi ya picha inayowakilishwa na ndarray hupatikana kwa kutumia umbo.

Kwa picha za rangi

Katika kesi ya picha za rangi, ndarray zifuatazo tatu-dimensional hutumiwa.

  • Safu (urefu)
  • Safu (upana)
  • Rangi (3)

umbo ni nakala ya vipengele hapo juu.

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'>

Ili kugawa kila thamani kwa kigezo, fungua nakala kama ifuatavyo.

h, w, c = im.shape
print('width:  ', w)
print('height: ', h)
print('channel:', c)
# width:   400
# height:  225
# channel: 3

_
Wakati wa kufungua nakala, zilizo hapo juu zinaweza kugawiwa kama kigezo cha thamani ambazo hazitatumika baadaye. Kwa mfano, ikiwa idadi ya rangi (idadi ya njia) haitumiki, zifuatazo hutumiwa.

h, w, _ = im.shape
print('width: ', w)
print('height:', h)
# width:  400
# height: 225

Inaweza pia kutumika kama ilivyo kwa kuibainisha kwa fahirisi (index) bila kuikabidhi kwa kutofautisha.

print('width: ', im.shape[1])
print('height:', im.shape[0])
# width:  400
# height: 225

(width, height)
Ikiwa unataka kupata nakala hii, unaweza kutumia kipande na kuandika yafuatayo: cv2.resize(), nk. Ikiwa unataka kubainisha hoja kwa ukubwa, tumia hii.

print(im.shape[1::-1])
# (400, 225)

Kwa picha za kijivu (monochrome).

Katika kesi ya picha za rangi ya kijivu (monochrome), ndarray zifuatazo mbili-dimensional hutumiwa.

  • Safu (urefu)
  • Safu (upana)

Sura itakuwa tuple hii.

im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE)

print(im_gray.shape)
print(type(im_gray.shape))
# (225, 400)
# <class 'tuple'>

Kimsingi ni sawa na kwa picha za rangi.

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

Ikiwa unataka kugawa upana na urefu kwa vigezo, unaweza kufanya hivyo kama ifuatavyo, iwe picha iko katika rangi au kijivu.

h, w = im.shape[0], im.shape[1]
print('width: ', w)
print('height:', h)
# width:  400
# height: 225

(width, height)
Ikiwa unataka kupata nakala hii, unaweza kutumia vipande na kuiandika kama ifuatavyo. Mtindo ufuatao wa uandishi unaweza kutumika iwe picha iko katika rangi au kijivujivu.

print(im_gray.shape[::-1])
print(im_gray.shape[1::-1])
# (400, 225)
# (400, 225)

Pillow(PIL):size, width, height:Pata saizi ya picha (upana, urefu)

Kitu cha picha kilichopatikana kwa kusoma picha na Pillow(PIL) kina sifa zifuatazo.

  • size
  • width
  • height

Ukubwa ni tuple ifuatayo.
(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

Unaweza pia kupata upana na urefu mtawaliwa kama sifa.
width,height

print('width: ', im.width)
print('height:', im.height)
# width:  400
# height: 225

Vile vile ni kweli kwa picha za kijivu (monochrome).

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