2016-04-04 5 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合成)で構成できます。 画像は白黒画像なので、3つのバンドは同じです。あなたは色のついた画像を使って違いを見ることができます。

は、私が何を意味するか確認するために、これを試してみてください:

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() 
関連する問題