2016-04-04 2 views
0

Unten finden Sie einen einfachen Codeabschnitt, der für den Zugriff auf ein Bild mit PIL verwendet wird, in ein numpy Array konvertiert und dann die Anzahl der Elemente im Array ausgibt.Falsche Anzahl von Elementen in einem nupfigen Array eines PIL-geöffneten Bildes

Das Bild in Frage ist hier - image - und besteht aus genau 100 Pixel (10x10). Das Nummernfeld enthält jedoch 300 Elemente (wobei ich 100 Elemente erwarten würde). Was mache ich falsch?

+1

prüfen * Form * ('arr.shape'). Vermutlich ist es ein Farbbild und die Form ist (10, 10, 3). Die letzte Dimension enthält die roten, grünen und blauen Kanäle. –

Antwort

1

Jedes Bild kann aus 3 Bändern bestehen (Rot-Grün-Blau oder RGB-Komposition). Da Ihr Bild ein Schwarz/Weiß-Bild ist, sind diese drei Bänder gleich. Sie können den Unterschied mit einem farbigen Bild sehen.

dieser Versuch zu sehen, was ich meine:

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()