In Python ci sono diverse librerie per gestire le immagini, come OpenCV e Pillow (PIL). Questa sezione spiega come ottenere le dimensioni dell'immagine (larghezza e altezza) per ciascuna di esse.
Puoi ottenere la dimensione dell'immagine (larghezza e altezza) come tupla usando shape per OpenCV e size per Pillow (PIL), ma nota che l'ordine di ciascuno è diverso.
Le seguenti informazioni sono fornite qui.
- OpenCV
ndarray.shape
:Ottenere le dimensioni dell'immagine (larghezza, altezza)- Per le immagini a colori
- Per le immagini in scala di grigi (monocromatiche)
- Pillow(PIL)
size
,width
,height
:Ottenere le dimensioni dell'immagine (larghezza, altezza)
Vedi il seguente articolo su come ottenere la dimensione (capacità) di un file invece della dimensione dell'immagine (dimensione).
- Articoli correlati:Ottenere la dimensione di un file o di una directory (cartella) in Python
OpenCV: ndarray.shape: Ottenere le dimensioni dell'immagine (larghezza, altezza)
Quando un file immagine viene caricato in OpenCV, viene trattato come un array NumPy ndarray, e la dimensione dell'immagine (larghezza e altezza) può essere ottenuta dall'attributo shape, che indica la forma dell'ndarray.
Non solo in OpenCV, ma anche quando un file immagine viene caricato in Pillow e convertito in un ndarray, la dimensione dell'immagine rappresentata dall'ndarray è ottenuta utilizzando shape.
Per le immagini a colori
Nel caso di immagini a colori, si usa il seguente ndarray tridimensionale.
- Fila (altezza)
- Fila (larghezza)
- Colore (3)
shape è una tupla degli elementi di cui sopra.
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 assegnare ogni valore a una variabile, scompattare 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 scompatta una tupla, quanto sopra può essere assegnato convenzionalmente come variabile per valori che non saranno utilizzati in seguito. Per esempio, se il numero di colori (numero di canali) non viene utilizzato, si usa quanto segue.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Può anche essere usato così com'è specificandolo per indice (index) senza assegnarlo a una variabile.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Se volete ottenere questa tupla, potete usare slice e scrivere quanto segue: cv2.resize(), ecc. Se volete specificare l'argomento per dimensione, usate questo.
print(im.shape[1::-1]) # (400, 225)
Per le immagini in scala di grigi (monocromatiche)
Nel caso di immagini in scala di grigi (monocromatiche), si usa la seguente matrice bidimensionale.
- Fila (altezza)
- Fila (larghezza)
La forma sarà questa 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'>
Fondamentalmente lo stesso che per le 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 volete assegnare la larghezza e l'altezza alle variabili, potete farlo come segue, sia che l'immagine sia 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
(width, height)
Se volete ottenere questa tupla, potete usare slices e scriverla come segue. Il seguente stile di scrittura può essere usato se l'immagine è a colori o in scala di grigi.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL): size, width, height: Ottenere le dimensioni dell'immagine (larghezza, altezza)
L'oggetto immagine ottenuto dalla lettura di un'immagine con Pillow(PIL) ha i seguenti attributi.
size
width
height
La dimensione è la seguente 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
Potete anche ottenere la larghezza e l'altezza rispettivamente come attributi.width
, height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Lo stesso vale per le immagini in scala di grigi (monocromatiche).
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