2017-01-11 4 views
0

Я использую следующий код для перебора изображений в папке и сохранения их в словаре с именами файлов в виде ключей, но это быстро взорвает требования к памяти, даже если изображения в папка должна легко вписываться в память. Почему это и как я могу это исправить?Итерация над изображениями в папке, взорвавшей память

def make_image_dict(folders): 
    image_dict={} 
    for folder in folders: 
    files = os.listdir(folder) 
    print ("Loading images in folder:", folder) 
    for file in files: 
     try: 
     image=ndimage.imread(folder+'/'+file) 
     if file.endswith('.png'): 
      image_name = str(file)[:-4] 
      image_dict[image_name]=image 
     except IOError as e: 
     print (e) 
    return image_dict 
+1

PNG-изображения сжимаются и несжатый в памяти. Вы считали это? – Daniel

ответ

0

Вы не хотите хранить фактические файлы в памяти, просто имена файлов. Таким образом вы можете загружать и выгружать файлы по одному позже в приложении. Загрузка большого количества данных не имеет смысла.

Попробуйте это

import os 

pictures = [] 
files = os.listdir('images') 
for file in files: 
    if (file.endswith(".png")): 
     pictures.append(file) 

.... 

for picture in pictures: 
    workingPicture = read(picture) 
    analyze(picture) 
    inspect(picture) 
    ... 

 Смежные вопросы

  • Нет связанных вопросов^_^