In Python zijn er verschillende bibliotheken om met afbeeldingen om te gaan, zoals OpenCV en Pillow (PIL). Deze sectie legt uit hoe je de afbeeldingsgrootte (breedte en hoogte) voor elk van hen kunt krijgen.
U kunt de beeldgrootte (breedte en hoogte) verkrijgen als een tupel met behulp van shape voor OpenCV en size voor Pillow (PIL), maar merk op dat de volgorde van beide verschillend is.
De volgende informatie wordt hier verstrekt.
- OpenCV
ndarray.shape
:Verkrijg de beeldgrootte (breedte, hoogte)- Voor afbeeldingen in kleur
- Voor afbeeldingen in grijstinten (monochroom)
- Pillow(PIL)
size
,width
,height
:Verkrijg de beeldgrootte (breedte, hoogte)
Zie het volgende artikel over hoe je de grootte (capaciteit) van een bestand kunt krijgen in plaats van de afbeeldingsgrootte (grootte).
- Verwante Artikelen:De grootte van een bestand of folder (map) in Python
OpenCV: ndarray.shape: Verkrijg de beeldgrootte (breedte, hoogte)
Wanneer een beeldbestand wordt geladen in OpenCV, wordt het behandeld als een NumPy array ndarray, en de grootte van het beeld (breedte en hoogte) kan worden verkregen uit het attribuut shape, dat de vorm van de ndarray aangeeft.
Niet alleen in OpenCV, maar ook wanneer een beeldbestand in Pillow wordt geladen en geconverteerd naar een ndarray, wordt de grootte van het beeld dat door de ndarray wordt gerepresenteerd, verkregen met behulp van shape.
Voor afbeeldingen in kleur
In het geval van kleurenbeelden wordt de volgende driedimensionale ndarray gebruikt.
- Rij (hoogte)
- Rij (breedte)
- Kleur (3)
vorm is een tupel van de bovenstaande 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'>
Om elke waarde aan een variabele toe te kennen, pak je de tuple als volgt uit.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Bij het uitpakken van een tupel kan het bovenstaande conventioneel als variabele worden toegewezen voor waarden die daarna niet meer worden gebruikt. Bijvoorbeeld, indien het aantal kleuren (aantal kanalen) niet wordt gebruikt, wordt het volgende gebruikt.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Het kan ook worden gebruikt zoals het is door het te specificeren met index (index) zonder het toe te wijzen aan een variabele.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Indien je deze tuple wil verkrijgen, kan je slice gebruiken en het volgende schrijven: cv2.resize(), enz. Indien je het argument wil specificeren volgens grootte, gebruik dan dit.
print(im.shape[1::-1]) # (400, 225)
Voor afbeeldingen in grijstinten (monochroom)
In het geval van afbeeldingen in grijstinten (monochroom) wordt de volgende tweedimensionale ndarray gebruikt.
- Rij (hoogte)
- Rij (breedte)
De vorm zal deze tupel zijn.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
In principe hetzelfde als voor kleurenbeelden.
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
Als u de breedte en hoogte aan variabelen wilt toekennen, kunt u dat als volgt doen, ongeacht of de afbeelding in kleur of grijstinten is.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Als u deze tuple wilt krijgen, kunt u slices gebruiken en het als volgt schrijven. De volgende schrijfwijze kan worden gebruikt ongeacht of het beeld in kleur of grijstinten is.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL): size, width, height: Verkrijg de beeldgrootte (breedte, hoogte)
Beeldobject verkregen door het lezen van een beeld met Pillow(PIL) heeft de volgende attributen.
size
width
height
De grootte is de volgende 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
U kunt ook de breedte en hoogte respectievelijk als attributen krijgen.width
, height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Hetzelfde geldt voor afbeeldingen in grijstinten (monochroom).
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