2016-04-04 17 views
0

Aşağıda, PIL kullanarak bir görüntüye erişmek, bir numpy dizisine dönüştürmek ve sonra dizideki öğe sayısını yazdırmak için kullanılan basit bir kod bölümü yer almaktadır.PIL-açılı görüntünün numpy dizisindeki hatalı öğe sayısı

Söz konusu görüntü burada - image - ve tam olarak 100 pikselden (10x10) oluşmaktadır. Bununla birlikte, numpy dizisi 300 öğeyi içerir (100 öğe beklerdim). Neyi yanlış yapıyorum?

import numpy as np 
import PIL 

impath = 'C:/Users/Ricky/Desktop/testim.tif' 
im = PIL.Image.open(impath) 
arr = np.array(im) 
print arr.size #300 
+1

* şekil * kontrol edin ('arr.shape'). Muhtemelen bu renkli bir görüntüdür ve şekil (10, 10, 3) şeklindedir. Son boyut kırmızı, yeşil ve mavi kanalları tutar. –

cevap

1

Her görüntü 3 banttan (Kırmızı-Yeşil-Mavi veya RGB bileşimi) oluşabilir. Görüntünüz siyah/beyaz bir görüntü olduğundan, bu üç bant aynıdır. Renkli bir görüntü kullanarak farkı görebilirsiniz.

ne demek istediğimi görmek için bu deneyin:

import matplotlib.pyplot as pyplot 
# this line above import a matplotlib library for plotting image 

import numpy as np 
import PIL 
impath = 'C:/Users/Ricky/Desktop/testim.tif' 
im = PIL.Image.open(impath) 
arr = np.array(im) 

print arr.shape # (10, 10, 3) 
print arr[:, : ,0].size # 100 

# next lines actually show the image 
pyplot.imshow(arr[:, : ,0], cmap='gray') 
pyplot.show()