Katika Python kuna maktaba kadhaa za kushughulikia picha, kama vile OpenCV na Pillow (PIL). Sehemu hii inaelezea jinsi ya kupata ukubwa wa picha (upana na urefu) kwa kila mmoja wao.
Unaweza kupata saizi ya picha (upana na urefu) kama nakala kwa kutumia umbo la OpenCV na saizi ya Pillow (PIL), lakini kumbuka kuwa mpangilio wa kila moja ni tofauti.
Habari ifuatayo imetolewa hapa.
- OpenCV
ndarray.shape
:Pata saizi ya picha (upana, urefu)- Kwa picha za rangi
- Kwa picha za kijivu (monochrome).
- Pillow(PIL)
size
,width
,height
:Pata saizi ya picha (upana, urefu)
Tazama nakala ifuatayo ya jinsi ya kupata saizi (uwezo) wa faili badala ya saizi ya picha (ukubwa).
- Nakala Zinazohusiana:Kupata saizi ya faili au saraka (folda) kwenye Python
OpenCV:ndarray.shape:Pata saizi ya picha (upana, urefu)
Wakati faili ya picha imepakiwa katika OpenCV, inachukuliwa kama safu ya NumPy, na saizi ya picha (upana na urefu) inaweza kupatikana kutoka kwa umbo la sifa, ambalo linaonyesha umbo la ndarray.
Sio tu kwenye OpenCV, lakini pia faili ya picha inapopakiwa kwenye Pillow na kubadilishwa kuwa ndarray, saizi ya picha inayowakilishwa na ndarray hupatikana kwa kutumia umbo.
Kwa picha za rangi
Katika kesi ya picha za rangi, ndarray zifuatazo tatu-dimensional hutumiwa.
- Safu (urefu)
- Safu (upana)
- Rangi (3)
umbo ni nakala ya vipengele hapo juu.
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'>
Ili kugawa kila thamani kwa kigezo, fungua nakala kama ifuatavyo.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Wakati wa kufungua nakala, zilizo hapo juu zinaweza kugawiwa kama kigezo cha thamani ambazo hazitatumika baadaye. Kwa mfano, ikiwa idadi ya rangi (idadi ya njia) haitumiki, zifuatazo hutumiwa.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Inaweza pia kutumika kama ilivyo kwa kuibainisha kwa fahirisi (index) bila kuikabidhi kwa kutofautisha.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Ikiwa unataka kupata nakala hii, unaweza kutumia kipande na kuandika yafuatayo: cv2.resize(), nk. Ikiwa unataka kubainisha hoja kwa ukubwa, tumia hii.
print(im.shape[1::-1]) # (400, 225)
Kwa picha za kijivu (monochrome).
Katika kesi ya picha za rangi ya kijivu (monochrome), ndarray zifuatazo mbili-dimensional hutumiwa.
- Safu (urefu)
- Safu (upana)
Sura itakuwa tuple hii.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
Kimsingi ni sawa na kwa picha za rangi.
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
Ikiwa unataka kugawa upana na urefu kwa vigezo, unaweza kufanya hivyo kama ifuatavyo, iwe picha iko katika rangi au kijivu.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Ikiwa unataka kupata nakala hii, unaweza kutumia vipande na kuiandika kama ifuatavyo. Mtindo ufuatao wa uandishi unaweza kutumika iwe picha iko katika rangi au kijivujivu.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL):size, width, height:Pata saizi ya picha (upana, urefu)
Kitu cha picha kilichopatikana kwa kusoma picha na Pillow(PIL) kina sifa zifuatazo.
size
width
height
Ukubwa ni tuple ifuatayo.(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
Unaweza pia kupata upana na urefu mtawaliwa kama sifa.width
,height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Vile vile ni kweli kwa picha za kijivu (monochrome).
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