U Pythonu postoji nekoliko knjižnica za rukovanje slikama, kao što su OpenCV i Pillow (PIL). Ovaj odjeljak objašnjava kako dobiti veličinu slike (širina i visina) za svaku od njih.
Veličinu slike (širinu i visinu) možete dobiti kao tuple koristeći oblik za OpenCV i veličinu za jastuk (PIL), ali imajte na umu da je redoslijed svake od njih drugačiji.
Ovdje su navedene sljedeće informacije.
- OpenCV
ndarray.shape
:Dobijte veličinu slike (širina, visina)- Za slike u boji
- Za slike u sivim tonovima (monokromatske).
- Pillow(PIL)
size
,width
,height
:Dobijte veličinu slike (širina, visina)
Pogledajte sljedeći članak o tome kako dobiti veličinu (kapacitet) datoteke umjesto veličine (veličine) slike.
- Povezani članci:Dobivanje veličine datoteke ili direktorija (mape) u Pythonu
OpenCV:ndarray.shape:Dobijte veličinu slike (širina, visina)
Kada se slikovna datoteka učita u OpenCV, ona se tretira kao NumPy niz ndarray, a veličina slike (širina i visina) može se dobiti iz oblika atributa, koji označava oblik ndarraya.
Ne samo u OpenCV-u, već i kada se slikovna datoteka učita u Pillow i pretvori u ndarray, veličina slike koju predstavlja ndarray dobiva se pomoću oblika.
Za slike u boji
U slučaju slika u boji, koristi se sljedeći trodimenzionalni ndarray.
- red (visina)
- Red (širina)
- Boja (3)
oblik je skup gore navedenih elemenata.
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'>
Za dodjelu svake vrijednosti varijabli, raspakirajte tuple na sljedeći način.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Prilikom raspakiranja tuplea, gore navedeno može se konvencionalno dodijeliti kao varijabla za vrijednosti koje se nakon toga neće koristiti. Na primjer, ako se ne koristi broj boja (broj kanala), koristi se sljedeće.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Također se može koristiti onakav kakav jest tako da ga navedete indeksom (indeksom) bez dodjeljivanja varijabli.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Ako želite dobiti ovaj tuple, možete koristiti slice i napisati sljedeće: cv2.resize(), itd. Ako želite specificirati argument po veličini, upotrijebite ovo.
print(im.shape[1::-1]) # (400, 225)
Za slike u sivim tonovima (monokromatske).
U slučaju sivih (jednobojnih) slika koristi se sljedeća dvodimenzionalna slika.
- red (visina)
- Red (širina)
Oblik će biti ovaj tuple.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
U osnovi isto kao i za slike u boji.
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
Ako želite varijablama dodijeliti širinu i visinu, to možete učiniti na sljedeći način, bilo da je slika u boji ili u sivim tonovima.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Ako želite dobiti ovu torku, možete koristiti rezove i napisati je na sljedeći način. Sljedeći stil pisanja može se koristiti bilo da je slika u boji ili u sivim tonovima.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL):size, width, height:Dobijte veličinu slike (širina, visina)
Objekt slike dobiven čitanjem slike s jastukom (PIL) ima sljedeće atribute.
size
width
height
Veličina je sljedeća tuple.(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
Također možete dobiti širinu i visinu kao atribute.width
,height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Isto vrijedi i za slike u sivim tonovima (monokromatske).
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