
Questo articolo descrive come ottenere la dimensione dell’immagine (larghezza, altezza) in Python con OpenCV e Pillow (PIL).
La dimensione dell’immagine può essere ottenuta come una tupla con la forma dell’attributo di ndarray in OpenCV e la dimensione dell’attributo di PIL.Image in Pillow (PIL). Si noti che l’ordine di larghezza e altezza è diverso.
- OpenCV: ottieni la dimensione dell’immagine (larghezza, altezza) con ndarray.shape
- Per immagine a colori
- Per immagini in scala di grigi (monocromatica).
- Cuscino (PIL): ottieni le dimensioni dell’immagine (larghezza, altezza) con dimensioni, larghezza, altezza
Vedere il seguente articolo per il ridimensionamento dell’immagine.
Vedere il seguente articolo su come ottenere la dimensione di un file in byte.
OpenCV: ottieni la dimensione dell’immagine (larghezza, altezza) con ndarray.shape
Quando un file immagine viene letto da OpenCV, viene trattato come array NumPy ndarray. La dimensione (larghezza, altezza) dell’immagine può essere ottenuta dalla forma dell’attributo.
Non limitato a OpenCV, la dimensione dell’immagine rappresentata da ndarray, ad esempio quando un file di immagine viene letto da Pillow e convertito in ndarray, è ottenuto dalla forma.
Per immagine a colori
Nel caso di un’immagine a colori, è una matrice 3D di riga (altezza) x colonna (larghezza) x colore (3). la forma è una tupla di (riga (altezza), colonna (larghezza), colore (3)).
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'>
Quando si assegna ogni valore a una variabile, decomprimere la tupla come segue.
h, w, c = im.shape
print('width: ', w)
print('height: ', h)
print('channel:', c)
# width: 400
# height: 225
# channel: 3
Quando si decomprime una tupla, i valori che non vengono utilizzati successivamente possono essere assegnati a _ per convenzione. Un esempio in cui il numero di colori (numero di canali) non viene utilizzato è il seguente.
h, w, _ = im.shape
print('width: ', w)
print('height:', h)
# width: 400
# height: 225
Naturalmente, puoi anche ottenerli direttamente dall’indice.
print('width: ', im.shape[1])
print('height:', im.shape[0])
# width: 400
# height: 225
Se vuoi ottenere tuple nell’ordine di (larghezza, altezza), puoi usare slice come nell’esempio seguente.
print(im.shape[1::-1])
# (400, 225)
Quando si imposta la dimensione su cv2.resize(), ecc., deve essere (larghezza, altezza).
Vedere il seguente articolo per i dettagli sull’affettatura.
Per immagini in scala di grigi (monocromatica).
Per le immagini in scala di grigi (monocromatica), è una matrice 2D di righe (altezza) x colonne (larghezza). la forma è una tupla di (riga (altezza), colonna (larghezza)).
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE)
print(im_gray.shape)
print(type(im_gray.shape))
# (225, 400)
# <class 'tuple'>
Fondamentalmente lo stesso delle immagini a colori:
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
Se desideri rispondere e altezza alle variabili, applicare puoi quanto segue a immagini a colori o in scala di grigi:
h, w = im.shape[0], im.shape[1]
print('width: ', w)
print('height:', h)
# width: 400
# height: 225
Se vuoi ottenere una tupla (larghezza, altezza), puoi usare slice. L’immagine può essere a colori o in scala di grigi se scritta come segue.
print(im_gray.shape[::-1])
print(im_gray.shape[1::-1])
# (400, 225)
# (400, 225)
Cuscino (PIL): ottieni le dimensioni dell’immagine (larghezza, altezza) con dimensioni, larghezza, altezza
L’oggetto PIL.Image ottenuto leggendo un’immagine con Pillow (PIL) ha attribuire dimensione, larghezza e altezza.
la dimensione è una tupla (larghezza, altezza).
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
La larghezza e l’altezza possono essere ottenute anche con gli attributi larghezza e altezza.
print('width: ', im.width)
print('height:', im.height)
# width: 400
# height: 225
Le immagini in scala di grigi (monocromatica) possono essere elaborate allo stesso modo.
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