Python, OpenCV ve Pillow(PIL) ile görüntü boyutunu (genişlik ve yükseklik) alma

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.

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
Copied title and URL