2012-09-05 54 views
3

我想用PIL顯示一個(512, 512) numpy的uint16數值的二維數組。如果我寫了一個函數:用PIL顯示一個numpy數組

def display_PIL(nparray): 
    image = Image.fromarray(nparray) 
    image.show() 

我得到一個錯誤信息:

不能處理這種數據類型。

但是,如果我補充一下:

def display_PIL(nparray): 
    image = Image.fromarray(nparray,'L') 
    image.show() 

它顯示的圖像,但我只有圖片的右上四分之一。有沒有解決方案來獲得完整的圖像?我在哪裏可以找到關於L選項和其他選項的信息?

+1

這是有點偏離主題,但如果你想繪製數組中的值,爲什麼不使用matplotlib?它旨在允許許多繪圖類型,並直接支持numpy數組。 – abought

+0

L''類型是嚴格的8位,所以你應該使用''; 16''來代替。見http://www.pythonware.com/library/pil/handbook/concepts.htm –

+0

Matplotlib是一個非常強大的小數據集顯示工具。在我的情況下,我有超過(100 000,100 000)值的二維數組,其中Matplotlib不是非常強大。理想情況下,我希望有一個工具取決於屏幕分辨率(平均顯示在屏幕上的每個像素上的陣列區域),其中縮放重新計算要顯示的顯示區域。但是這樣的工具顯然不存在。 – user1187727

回答

1

該問題使用Image.fromarray函數中的選項'I; 16'解決。非常感謝。