I Python findes der flere biblioteker til håndtering af billeder, f.eks. OpenCV og Pillow (PIL). Dette afsnit forklarer, hvordan man får billedstørrelsen (bredde og højde) for hvert af dem.
Du kan få billedstørrelsen (bredde og højde) som en tupel ved hjælp af shape for OpenCV og size for Pillow (PIL), men bemærk, at rækkefølgen af hver af dem er forskellig.
Her findes følgende oplysninger.
- OpenCV
ndarray.shape
:Hent billedstørrelsen (bredde, højde)- For farvebilleder
- For billeder i gråskala (monokromt)
- Pillow(PIL)
size
,width
,height
:Hent billedstørrelsen (bredde, højde)
Se følgende artikel om, hvordan du får størrelsen (kapaciteten) af en fil i stedet for billedstørrelsen (størrelse).
- Relaterede artikler:Få størrelsen af en fil eller mappe (folder) i Python
OpenCV: ndarray.shape: Hent billedstørrelsen (bredde, højde)
Når en billedfil indlæses i OpenCV, behandles den som et NumPy-array ndarray, og billedets størrelse (bredde og højde) kan fås fra attributten shape, som angiver ndarrayets form.
Ikke kun i OpenCV, men også når en billedfil indlæses i Pillow og konverteres til et ndarray, fås størrelsen af det billede, der repræsenteres af ndarrayet, ved hjælp af shape.
For farvebilleder
I tilfælde af farvebilleder anvendes følgende tredimensionale ndarray.
- Række (højde)
- Række (bredde)
- Farve (3)
shape er en tupel af de ovennævnte elementer.
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'>
Hvis du vil tildele hver værdi til en variabel, skal du pakke tuplen ud på følgende måde.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Ved udpakning af en tupel kan ovenstående på konventionel vis tildeles som en variabel for værdier, der ikke vil blive brugt efterfølgende. Hvis f.eks. antallet af farver (antal kanaler) ikke anvendes, anvendes følgende.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Det kan også bruges som det er ved at angive det ved indeks (index) uden at tildele det til en variabel.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Hvis du vil have denne tupel, kan du bruge slice og skrive følgende: cv2.resize(), osv. Hvis du ønsker at angive argumentet efter størrelse, skal du bruge dette.
print(im.shape[1::-1]) # (400, 225)
For billeder i gråskala (monokromt)
I tilfælde af gråtonebilleder (monokrome billeder) anvendes følgende todimensionale ndarray.
- Række (højde)
- Række (bredde)
Formen vil være denne tupel.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
I princippet det samme som for farvebilleder.
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
Hvis du vil tildele bredden og højden til variabler, kan du gøre det på følgende måde, uanset om billedet er i farve eller gråtoneskala.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Hvis du vil have denne tupel, kan du bruge skiver og skrive den som følger. Følgende skrivestil kan bruges, uanset om billedet er i farver eller gråtoneskala.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL): size, width, height: Hent billedstørrelsen (bredde, højde)
Billedobjektet, der opnås ved at læse et billede med Pillow(PIL), har følgende attributter.
size
width
height
Størrelsen er følgende 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
Du kan også få henholdsvis bredde og højde som attributter.width
, height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Det samme gælder for gråtonebilleder (monokrome billeder).
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