2017-02-13 2 views
0

Я пытаюсь импортировать кучу изображений и готовить их для keras. Цель здесь состоит в том, чтобы иметь массив следующих измерений. (длина, 160, 329,3). Как вы можете видеть, моя функция reshape закомментирована. В строке «print (images.shape) возвращается (8037). Не знаете, как перейти к правильному размеру массива. Для справки 1-й столбец в файле csv представляет собой список путей к изображению, о котором идет речь. ниже, который сочетает в себе путь изображения внутри папки и путь к папке.Импорт изображений в prep для keras

Когда я запустил функцию изменения формы с комментариями, я получаю следующую ошибку. "ValueError: не может изменить размер массива 8037 в форму (8037 , 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, прежде чем она будет добавлена ​​к images, чтобы проверить это то, что вы ожидаете? Еще лучше добавлять в imshow чтобы убедиться, что вы загружаете изображения, которые вы ожидаете (нужно только один или два). cv2.imread не выдает ошибки, если на пути к файлу нет изображения, поэтому ваш массив может быть всем None, который даст точное поведение, которое вы описали.

Если это проблема, проверьте переменную img и убедитесь, что она указана именно там, где вы хотите.

+0

Таким образом, форма изображения (160,320,3) и печать (images.shape) возвращает ошибку «AttributeError:„список“объект не имеет атрибута„формы“» – Jake3991

+0

@ Jake3991 внутри цикла вы в состоянии для отображения одного из изображений с помощью 'plt.imshow'? – hulleywood

+0

plt.imshow (изображение) внутри цикла дает следующую ошибку 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)