2016-04-04 40 views
0

下面是一段簡單的代碼,用於使用PIL訪問圖像,將其轉換爲numpy數組,然後打印數組中的元素數量。PIL打開圖像的numpy陣列中元素的數量錯誤

有問題的圖片在這裏 - image - 正好包含100個像素(10x10)。然而,numpy數組包含300個元素(我期望有100個元素)。我究竟做錯了什麼?

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

檢查*形狀*('arr.shape')。據推測這是一個彩色圖像,形狀是(10,10,3)。最後一個維度包含紅色,綠色和藍色通道。 –

回答

1

每個圖像可以由3個波段(紅 - 綠 - 藍或RGB合成)組成。 由於您的圖像是黑色/白色圖像,所以這三個樂隊是相同的。您可以使用彩色圖像查看差異。

試試這個,看看我的意思是:

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