In Python gibt es mehrere Bibliotheken für den Umgang mit Bildern, wie OpenCV und Pillow (PIL). Dieser Abschnitt erklärt, wie man die Bildgröße (Breite und Höhe) für jede dieser Bibliotheken ermittelt.
Sie können die Bildgröße (Breite und Höhe) als Tupel erhalten, indem Sie shape für OpenCV und size für Pillow (PIL) verwenden, aber beachten Sie, dass die Reihenfolge der beiden unterschiedlich ist.
Hier finden Sie die folgenden Informationen.
- OpenCV
ndarray.shape
:Abfrage der Bildgröße (Breite, Höhe)- Für Farbbilder
- Für Graustufenbilder (monochrom)
- Pillow(PIL)
size
,width
,height
:Abfrage der Bildgröße (Breite, Höhe)
Im folgenden Artikel erfahren Sie, wie Sie die Größe (Kapazität) einer Datei anstelle der Bildgröße (Größe) ermitteln können.
OpenCV: ndarray.shape: Abfrage der Bildgröße (Breite, Höhe)
Wenn eine Bilddatei in OpenCV geladen wird, wird sie als NumPy-Array ndarray behandelt, und die Größe des Bildes (Breite und Höhe) kann über das Attribut shape ermittelt werden, das die Form des ndarray angibt.
Nicht nur in OpenCV, sondern auch wenn eine Bilddatei in Pillow geladen und in ein ndarray konvertiert wird, wird die Größe des durch das ndarray repräsentierten Bildes mit Hilfe von shape ermittelt.
Für Farbbilder
Im Falle von Farbbildern wird das folgende dreidimensionale ndarray verwendet.
- Reihe (Höhe)
- Zeile (Breite)
- Farbe (3)
shape ist ein Tupel aus den oben genannten Elementen.
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'>
Um jeden Wert einer Variablen zuzuweisen, entpacken Sie das Tupel wie folgt.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Beim Entpacken eines Tupels kann der obige Wert konventionell als Variable für Werte zugewiesen werden, die danach nicht mehr verwendet werden. Wenn zum Beispiel die Anzahl der Farben (Anzahl der Kanäle) nicht verwendet wird, wird Folgendes verwendet.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Er kann auch unverändert verwendet werden, indem er durch einen Index (index) angegeben wird, ohne ihn einer Variablen zuzuweisen.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Wenn Sie dieses Tupel erhalten möchten, können Sie slice verwenden und folgendes schreiben: cv2.resize(), usw. Wenn Sie das Argument nach Größe spezifizieren wollen, verwenden Sie dies.
print(im.shape[1::-1]) # (400, 225)
Für Graustufenbilder (monochrom)
Im Falle von Graustufenbildern (monochrom) wird das folgende zweidimensionale ndarray verwendet.
- Reihe (Höhe)
- Zeile (Breite)
Die Form wird dieses Tupel sein.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
Grundsätzlich gilt dasselbe wie für Farbbilder.
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
Wenn Sie die Breite und Höhe Variablen zuweisen möchten, können Sie dies wie folgt tun, unabhängig davon, ob das Bild in Farbe oder in Graustufen vorliegt.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Wenn Sie dieses Tupel erhalten möchten, können Sie Slices verwenden und es wie folgt schreiben. Der folgende Schreibstil kann unabhängig davon verwendet werden, ob das Bild in Farbe oder in Graustufen vorliegt.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL): size, width, height: Abfrage der Bildgröße (Breite, Höhe)
Das durch das Lesen eines Bildes mit Pillow(PIL) erhaltene Bildobjekt hat die folgenden Attribute.
size
width
height
Die Größe ist das folgende Tupel.(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
Sie können auch die Breite und Höhe als Attribute erhalten.width
, height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Das Gleiche gilt für Graustufenbilder (monochrome Bilder).
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