Marrja e madhësisë së imazhit (gjerësia dhe lartësia) me Python, OpenCV dhe Pillow (PIL)

biznes

Në Python ka disa biblioteka për trajtimin e imazheve, të tilla si OpenCV dhe Pillow (PIL). Ky seksion shpjegon se si të merrni madhësinë e imazhit (gjerësia dhe lartësia) për secilën prej tyre.

Ju mund të merrni madhësinë e imazhit (gjerësinë dhe lartësinë) si një tufë duke përdorur formën për OpenCV dhe madhësinë për Pillow (PIL), por vini re se rendi i secilës është i ndryshëm.

Informacioni i mëposhtëm jepet këtu.

  • OpenCV
    • ndarray.shape:Merrni madhësinë e imazhit (gjerësia, lartësia)
      • Për imazhe me ngjyra
      • Për imazhet në shkallë gri (njëngjyrëshe).
  • Pillow(PIL)
    • size,width,height:Merrni madhësinë e imazhit (gjerësia, lartësia)

Shihni artikullin vijues se si të merrni madhësinë (kapacitetin) e një skedari në vend të madhësisë së imazhit (madhësia).

OpenCV:ndarray.shape:Merrni madhësinë e imazhit (gjerësia, lartësia)

Kur një skedar imazhi ngarkohet në OpenCV, ai trajtohet si një varg grupi NumPy dhe madhësia e imazhit (gjerësia dhe lartësia) mund të merret nga forma e atributit, e cila tregon formën e ndarray.

Jo vetëm në OpenCV, por edhe kur një skedar imazhi ngarkohet në Pillow dhe konvertohet në një ndarray, madhësia e imazhit të përfaqësuar nga ndarray merret duke përdorur formën.

Për imazhe me ngjyra

Në rastin e imazheve me ngjyra, përdoret ndarja tredimensionale e mëposhtme.

  • Rreshti (lartësia)
  • Rreshti (gjerësia)
  • Ngjyra (3)

forma është një tufë e elementeve të mësipërm.

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

Për t’i caktuar çdo vlerë një ndryshoreje, shpaketoni tuple si më poshtë.

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

_
Kur shpaketoni një tuple, sa më sipër mund të caktohet në mënyrë konvencionale si një variabël për vlerat që nuk do të përdoren më pas. Për shembull, nëse numri i ngjyrave (numri i kanaleve) nuk përdoret, përdoret sa vijon.

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

Mund të përdoret gjithashtu si është duke e specifikuar me indeks (indeks) pa e caktuar atë në një ndryshore.

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

(width, height)
Nëse dëshironi të merrni këtë tuple, mund të përdorni slice dhe të shkruani sa vijon: cv2.resize(), etj. Nëse dëshironi të specifikoni argumentin sipas madhësisë, përdorni këtë.

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

Për imazhet në shkallë gri (njëngjyrëshe).

Në rastin e imazheve me shkallë gri (njëngjyrëshe), përdoret ndarja dydimensionale e mëposhtme.

  • Rreshti (lartësia)
  • Rreshti (gjerësia)

Forma do të jetë kjo tufë.

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

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

Në thelb e njëjta gjë si për imazhet me ngjyra.

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

Nëse dëshironi t’u caktoni gjerësinë dhe lartësinë variablave, mund ta bëni këtë si më poshtë, pavarësisht nëse imazhi është me ngjyra ose në shkallë gri.

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

(width, height)
Nëse dëshironi të merrni këtë tuple, mund të përdorni feta dhe ta shkruani si më poshtë. Stili i mëposhtëm i shkrimit mund të përdoret nëse imazhi është me ngjyra ose në shkallë gri.

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

Pillow(PIL):size, width, height:Merrni madhësinë e imazhit (gjerësia, lartësia)

Objekti i imazhit i marrë duke lexuar një imazh me Pillow(PIL) ka atributet e mëposhtme.

  • size
  • width
  • height

Madhësia është dyfishi i mëposhtëm.
(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

Ju gjithashtu mund të merrni gjerësinë dhe lartësinë përkatësisht si atribute.
width,height

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

E njëjta gjë vlen edhe për imazhet në shkallë gri (njëngjyrëshe).

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