Python’da, OpenCV ve Pillow (PIL) gibi görüntüleri işlemek için birkaç kitaplık vardır. Bu bölüm, her biri için görüntü boyutunun (genişlik ve yükseklik) nasıl alınacağını açıklar.
Görüntü boyutunu (genişlik ve yükseklik) OpenCV için şekil ve Yastık (PIL) için boyut kullanarak bir demet olarak alabilirsiniz, ancak her birinin sırasının farklı olduğunu unutmayın.
Aşağıdaki bilgiler burada verilmiştir.
- OpenCV
ndarray.shape
:Görüntü boyutunu alın (genişlik, yükseklik)- renkli görüntüler için
- Gri tonlamalı (tek renkli) görüntüler için
- Pillow(PIL)
size
,width
,height
:Görüntü boyutunu alın (genişlik, yükseklik)
Görüntü boyutu (boyut) yerine bir dosyanın boyutunu (kapasitesini) nasıl alacağınızla ilgili aşağıdaki makaleye bakın.
- İlgili Makaleler:Python’da bir dosyanın veya dizinin (klasörün) boyutunu alma
OpenCV:ndarray.shape:Görüntü boyutunu alın (genişlik, yükseklik)
OpenCV’de bir görüntü dosyası yüklendiğinde, bir NumPy dizisi ndarray’i olarak kabul edilir ve görüntünün boyutu (genişlik ve yükseklik), ndarray’in şeklini belirten öznitelik şeklinden elde edilebilir.
Sadece OpenCV’de değil, ayrıca Pillow’a bir resim dosyası yüklendiğinde ve bir ndarray’e dönüştürüldüğünde, şekil kullanılarak ndarray tarafından temsil edilen görüntünün boyutu elde edilir.
renkli görüntüler için
Renkli görüntüler söz konusu olduğunda, aşağıdaki üç boyutlu ndarray kullanılır.
- Satır yüksekliği)
- Satır (genişlik)
- Renk (3)
şekil, yukarıdaki öğelerin bir demetidir.
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'>
Her değeri bir değişkene atamak için, demeti aşağıdaki gibi açın.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Bir demeti açarken, yukarıdakiler geleneksel olarak daha sonra kullanılmayacak değerler için bir değişken olarak atanabilir. Örneğin renk sayısı (kanal sayısı) kullanılmıyorsa aşağıdaki kullanılır.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Ayrıca bir değişkene atamadan indeks (indeks) ile belirterek olduğu gibi kullanılabilir.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Bu demeti almak istiyorsanız, dilim kullanabilir ve aşağıdakini yazabilirsiniz: cv2.resize(), vb. Argümanı boyuta göre belirtmek istiyorsanız bunu kullanın.
print(im.shape[1::-1]) # (400, 225)
Gri tonlamalı (tek renkli) görüntüler için
Gri tonlamalı (tek renkli) görüntüler söz konusu olduğunda, aşağıdaki iki boyutlu ndarray kullanılır.
- Satır yüksekliği)
- Satır (genişlik)
Şekil bu demet olacak.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
Temelde renkli görüntülerle aynı.
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
Değişkenlere genişlik ve yükseklik atamak istiyorsanız, görselin renkli veya gri tonlamalı olup olmadığını aşağıdaki gibi yapabilirsiniz.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Bu tuple’ı almak istiyorsanız, dilimleri kullanabilir ve aşağıdaki gibi yazabilirsiniz. Görüntünün renkli veya gri tonlamalı olmasına bakılmaksızın aşağıdaki yazı stili kullanılabilir.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL):size, width, height:Görüntü boyutunu alın (genişlik, yükseklik)
Pillow(PIL) ile bir görüntünün okunmasıyla elde edilen görüntü nesnesi aşağıdaki özelliklere sahiptir.
size
width
height
Boyut aşağıdaki Tuple’dır.(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
Nitelik olarak sırasıyla genişlik ve yüksekliği de alabilirsiniz.width
,height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Aynısı gri tonlamalı (tek renkli) görüntüler için de geçerlidir.
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