2013-03-21 55 views
1

numpy,該array方法可以一圖像轉換成一個大陣,問題是,什麼的數字數組中的含義是什麼?(RGB值?灰度值?)numpy數組中數字的含義是什麼?

更重要的是,當我一個圖像轉換爲模式 「1」,試圖

im = Image.open("test.jpg") 
# Some processing ... 
im = im.convert("1") 
im_arr = array(im,dtype=uint8) 

我發現im_arr陣列不僅0和255顯示:

array([[170, 170, 170, ..., 255, 255, 255], 
     [255, 248, 255, ..., 175, 255, 222], 
     [255, 255, 247, ..., 175, 170, 171], 
     ..., 
     [ 32, 105, 110, ..., 32, 124, 32], 
     [ 32, 32, 32, ..., 101, 115, 39], 
     [ 41, 10, 32, ..., 109, 111, 115]], dtype=uint8) 

爲什麼? (我真的想知道不同模式下數字的含義)

+0

你從哪裏得到最初'im'? – mgilson 2013-03-21 15:37:54

回答

2

通過運行im.convert("1"),要轉換的加載圖像到二層圖像這只有0或255的像素值要正確地做到這一點,

im_arr = np.array(im.getdata(), dtype = np.uint8).reshape(im.size[0], im.size[1]) 

有了這個,您將收到您想要的雙層圖像,您可以使用matplotlib.pyplot.imshow保存或查看該圖像。

您收到的奇數從轉換處理來一個numpy的陣列。如果您選擇不同的數據類型(np.intnp.int8np.uint8,...),你會發現,每一種返回不同的陣列。

不知道很多有關的PIL.Image對象結構,我不能說這是爲什麼。但我認爲可以肯定地說,沒有.getdata()的結果是垃圾。

相關問題