2017-01-08 25 views
0

複数のRGBイメージをnumpy配列に読み込みたい。私のすべての画像は解像度があります(32,32,3)。フォルダに10枚の画像があり、最終的な「画像」数列が(10,32,32,3)になります。私は以下のコードを試しました。複数のRGBイメージをnumpy配列に読み込む

import matplotlib.image as mpimg 
import os 

folder = 'test_images' 
images = np.array([(mpimg.imread(os.path.join(folder, filename))) for filename in os.listdir('test_images')], dtype='uint8') 

私は解決策をまとめるために、エラー

ValueError        Traceback (most recent call last) 
<ipython-input-109-0c5d51212e48> in <module>() 
     3 
     4 folder = 'test_images' 
----> 5 images = np.array([(mpimg.imread(os.path.join(folder, filename))) for filename in os.listdir('test_images')], dtype='uint8') 
     6 
     7 print(len(images)) 

ValueError: could not broadcast input array from shape (32,32,3) into shape (32,32) 
+0

あなたは結果の形状は(10、32、32でなければなりません意味ですか、3)または本当に(10,32,32,5)? 2番目の場合は、なぜ5チャンネルですか? – BloodyD

+0

@BloodyDそれは私の間違いでした(10,32,32,3)。私はそれを訂正しました – Poorna

+1

画像の一部がグレースケール画像として読み込まれることがあります。 np.asarray(Image.open(imname).convert( "RGB")) – BloodyD

答えて

1

の下に取得するには、私は次の操作を行います:

from PIL import Image 
import os, numpy as np 
folder = 'test_images' 

read = lambda imname: np.asarray(Image.open(imname).convert("RGB")) 

ims = [read(os.path.join(folder, filename)) for filename in os.listdir(folder)] 
im_array = np.array(ims, dtype='uint8') 
関連する問題