Obtenció de la mida de la imatge (amplada i alçada) amb Python, OpenCV i Pillow (PIL)

Negocis

A Python hi ha diverses biblioteques per manejar imatges, com ara OpenCV i Pillow (PIL). En aquesta secció s’explica com obtenir la mida de la imatge (amplada i alçada) per a cadascun d’ells.

Podeu obtenir la mida de la imatge (amplada i alçada) com una tupla utilitzant la forma per a OpenCV i la mida per a Pillow (PIL), però tingueu en compte que l’ordre de cadascun és diferent.

La informació següent es proporciona aquí.

  • OpenCV
    • ndarray.shape:Obteniu la mida de la imatge (amplada, alçada)
      • Per a imatges en color
      • Per a imatges en escala de grisos (monocromes).
  • Pillow(PIL)
    • size,width,height:Obteniu la mida de la imatge (amplada, alçada)

Consulteu l’article següent sobre com obtenir la mida (capacitat) d’un fitxer en lloc de la mida de la imatge (mida).

OpenCV:ndarray.shape:Obteniu la mida de la imatge (amplada, alçada)

Quan es carrega un fitxer d’imatge a OpenCV, es tracta com un ndarray de matriu NumPy, i la mida de la imatge (amplada i alçada) es pot obtenir a partir de la forma de l’atribut, que indica la forma del ndarray.

No només a OpenCV, sinó també quan es carrega un fitxer d’imatge a Pillow i es converteix en un ndarray, la mida de la imatge representada pel ndarray s’obté mitjançant la forma.

Per a imatges en color

En el cas de les imatges en color, s’utilitza el següent ndarray tridimensional.

  • Fila (alçada)
  • Fila (amplada)
  • Color (3)

La forma és una tupla dels elements anteriors.

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

Per assignar cada valor a una variable, descomprimiu la tupla de la manera següent.

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

_
Quan es desempaqueta una tupla, l’anterior es pot assignar convencionalment com a variable per a valors que no s’utilitzaran després. Per exemple, si no s’utilitza el nombre de colors (nombre de canals), s’utilitza el següent.

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

També es pot utilitzar tal qual especificant-lo per índex (índex) sense assignar-lo a una variable.

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

(width, height)
Si voleu obtenir aquesta tupla, podeu utilitzar slice i escriure el següent: cv2.resize(), etc. Si voleu especificar l’argument per mida, feu servir això.

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

Per a imatges en escala de grisos (monocromes).

En el cas d’imatges en escala de grisos (monocromes), s’utilitza el següent ndarray bidimensional.

  • Fila (alçada)
  • Fila (amplada)

La forma serà aquesta tupla.

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

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

Bàsicament el mateix que per a les imatges en color.

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

Si voleu assignar l’amplada i l’alçada a les variables, podeu fer-ho de la següent manera, tant si la imatge és en color com en escala de grisos.

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

(width, height)
Si voleu obtenir aquesta tupla, podeu utilitzar rodanxes i escriure-la de la següent manera. L’estil d’escriptura següent es pot utilitzar tant si la imatge és en color com en escala de grisos.

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

Pillow(PIL):size, width, height:Obteniu la mida de la imatge (amplada, alçada)

L’objecte d’imatge obtingut llegint una imatge amb Pillow(PIL) té els atributs següents.

  • size
  • width
  • height

La mida és la següent tupla.
(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

També podeu obtenir l’amplada i l’alçada respectivament com a atributs.
width,height

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

El mateix passa amb les imatges en escala de grisos (monocromes).

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

A Python hi ha diverses biblioteques per manejar imatges, com ara OpenCV i Pillow (PIL). En aquesta secció s’explica com obtenir la mida de la imatge (amplada i alçada) per a cadascun d’ells.

Podeu obtenir la mida de la imatge (amplada i alçada) com una tupla utilitzant la forma per a OpenCV i la mida per a Pillow (PIL), però tingueu en compte que l’ordre de cadascun és diferent.

La informació següent es proporciona aquí.

  • OpenCV
    • ndarray.shape:Obteniu la mida de la imatge (amplada, alçada)
      • Per a imatges en color
      • Per a imatges en escala de grisos (monocromes).
  • Pillow(PIL)
    • size,width,height:Obteniu la mida de la imatge (amplada, alçada)

Consulteu l’article següent sobre com obtenir la mida (capacitat) d’un fitxer en lloc de la mida de la imatge (mida).

OpenCV:ndarray.shape:Obteniu la mida de la imatge (amplada, alçada)

Quan es carrega un fitxer d’imatge a OpenCV, es tracta com un ndarray de matriu NumPy, i la mida de la imatge (amplada i alçada) es pot obtenir a partir de la forma de l’atribut, que indica la forma del ndarray.

No només a OpenCV, sinó també quan es carrega un fitxer d’imatge a Pillow i es converteix en un ndarray, la mida de la imatge representada pel ndarray s’obté mitjançant la forma.

Per a imatges en color

En el cas de les imatges en color, s’utilitza el següent ndarray tridimensional.

  • Fila (alçada)
  • Fila (amplada)
  • Color (3)

La forma és una tupla dels elements anteriors.

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

Per assignar cada valor a una variable, descomprimiu la tupla de la manera següent.

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

_
Quan es desempaqueta una tupla, l’anterior es pot assignar convencionalment com a variable per a valors que no s’utilitzaran després. Per exemple, si no s’utilitza el nombre de colors (nombre de canals), s’utilitza el següent.

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

També es pot utilitzar tal qual especificant-lo per índex (índex) sense assignar-lo a una variable.

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

(width, height)
Si voleu obtenir aquesta tupla, podeu utilitzar slice i escriure el següent: cv2.resize(), etc. Si voleu especificar l’argument per mida, feu servir això.

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

Per a imatges en escala de grisos (monocromes).

En el cas d’imatges en escala de grisos (monocromes), s’utilitza el següent ndarray bidimensional.

  • Fila (alçada)
  • Fila (amplada)

La forma serà aquesta tupla.

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

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

Bàsicament el mateix que per a les imatges en color.

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

Si voleu assignar l’amplada i l’alçada a les variables, podeu fer-ho de la següent manera, tant si la imatge és en color com en escala de grisos.

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

(width, height)
Si voleu obtenir aquesta tupla, podeu utilitzar rodanxes i escriure-la de la següent manera. L’estil d’escriptura següent es pot utilitzar tant si la imatge és en color com en escala de grisos.

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

Pillow(PIL):size, width, height:Obteniu la mida de la imatge (amplada, alçada)

L’objecte d’imatge obtingut llegint una imatge amb Pillow(PIL) té els atributs següents.

  • size
  • width
  • height

La mida és la següent tupla.
(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

També podeu obtenir l’amplada i l’alçada respectivament com a atributs.
width,height

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

El mateix passa amb les imatges en escala de grisos (monocromes).

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