2015-05-27 56 views
2

我的代碼如下所示:當我將二維灰度PIL圖像轉換爲一維numpy數組後,什麼是最平滑的方式來到二維numpy數組(圖像/矩陣)?

img = Image.open(path) 
pix = np.asarray(img) 
# i tried to access an (x,y) pixel and found the array was one dimensional 
print str(float(pix[1,1])), "\t", 

我需要洗牌一維數組,以便它是2D的,所以我可以訪問(X,Y)的像素。最順利的方法是什麼?

我得到這個錯誤對於上面:

IndexError: too many indices for array 

編輯:

下面是執行上面的代碼後,從終端收集的一些信息。 np.asarray()顯然是在做一些事情,關於圖像尺寸的信息仍然包含在ndarray pix - array(<PIL.TiffImagePlugin.TiffImageFile image mode=I;16 size=1280x1080 at 0x110CA9F38>, dtype=object)中。

>>> img 
<PIL.TiffImagePlugin.TiffImageFile image mode=I;16 size=1280x1080 at 0x110CA9F38> 
>>> pix 
array(<PIL.TiffImagePlugin.TiffImageFile image mode=I;16 size=1280x1080 at 0x110CA9F38>, dtype=object) 
>>> type(img) 
<type 'instance'> 
>>> type(pix) 
<type 'numpy.ndarray'> 
>>> img.size 
(1280, 1080) 
>>> pix.size 
1 
+1

你可以用'.flat()''中numpy' –

+0

對不起,我很困惑 - 我以爲平()崩潰的數組爲一個維 - 與我想要的相反。 – user391339

回答

1

如果你可以使用SciPy的:

from scipy import ndimage 
image = ndimage.imread('image.png') 
image.shape 
+0

我需要使用PIL Image中的seek()函數來處理多頁TIFF(TIFF堆棧)。 – user391339

相關問題