2017-02-13 15 views
0

私はたくさんの画像をインポートし、それらをケラスのために準備しようとしています。ここでの目標は、以下の次元の配列を持つことです。 (長さ、160,329,3)。ご覧のとおり、私のリサーブ機能はコメントアウトされています。 「print(images.shape)」行には(8037)が返されます。正しい配列の次元を取得する方法がわかりません。csvファイルの第1列は、問題の画像へのパスのリストです。関数は、フォルダ内の画像のパスとフォルダへのパスを結合します。ケラスのための準備に画像をインポートする

コメントアウトされたリサーブ関数を実行すると、次のエラーが発生します。 "ValueError:サイズ8037の配列をシェイプに変形できません(8037それはあなたが何を期待?さらに良いことがでimshowを追加することになるされていることを確認するためにimagesに追加される前に、160,320,3)」

import csv 
import cv2 

f = open('/Users/username/Desktop/data/driving_log.csv') 
csv_f = csv.reader(f) 

m=[] 
for row in csv_f: 
    n=(row) 
    m.append(n) 

images=[] 
for i in range(len(m)): 
    img=(m[i][1]) 
    img=img.lstrip() 
    path='/Users/username/Desktop/data/' 
    img=path+img 
    image=cv2.imread(img) 
    images.append(image) 
item_num = len(images) 
images=np.array(images) 
#images=np.array(images).reshape(item_num, 160, 320, 3) 
print(images.shape) #returns (8037,) 

答えて

0

あなたはimageの形状を印刷することができますあなたが期待しているイメージをロードしていることを確認してください(1つまたは2つだけ必要です)。 cv2.imreadは、指定したファイルパスにイメージがない場合はエラーをスローしません。そのため、配列はNoneであり、記述したとおりの動作になります。

これが問題になる場合は、img変数をチェックし、正確にどこを指しているのかを確認してください。

+0

ので、画像の形状がある(160,320,3)と印刷(images.shapeは)エラー「はAttributeError: 『をリスト』オブジェクトには属性 『形状』を持っていません」を返すループ内Jake3991 @ – Jake3991

+0

あなたは可能です'plt.imshow'を使って画像の1つを表示するには? – hulleywood

+0

ループ内のplt.imshow(image)が次のエラーを返します。TypeError:画像データをfloatに変換できません – Jake3991

0

見出しのCSVファイルの最初の行が含まれていました。私はそれを並べ替えた後、それは素晴らしい走った。それは私に要求された形を与えた。

images=[] 
for i in range(1,len(labels)): 
    img=(m[i][1]) 
    img=img.lstrip() 
    path='/Users/user/Desktop/data/' 
    img=path+img 

    image=cv2.imread(img) 
    images.append(image) 
関連する問題