#python #python-3.x #function
#python #python-3.x #функция
Вопрос:
Здесь я пытаюсь прочитать много изображений из моей корневой папки и получил ошибку такого типа.Как исправить эту проблему?
код:
def load_images_from_folder_2(folder):
images = []
for filename in glob.glob(folder):
a= cv2.imread(filename)
#print(a)
images.append(a)
return images
Возвращает ошибку:
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-15-99a421951aee> in <module>
168 #videos=f'F:/deepfake_data/train_sample_videos_2/{i}'
169 root_dir='F:/deepfake_data/train_sample_videos_2/'
--> 170 save_diffs(pairs,root_dir)
171
<ipython-input-15-99a421951aee> in save_diffs(pair, root_dir)
140 frame_2=[]
141 for n in range(0, len(onlyfiles)):
--> 142 img[n] = cv2.imread( join(mypath,onlyfiles[n]) )
143 frame_2.append(img[n])
144
error: OpenCV(4.4.0) C:UsersappveyorAppDataLocalTemp1pip-req-build-2b5g8ysbopencvmodulescoresrcalloc.cpp:73: error: (-4:Insufficient memory) Failed to allocate 6220800 bytes in function 'cv::OutOfMemoryError'
Чтение изображений из папки:
mypath="F:/deepfake_data/fake_id.jpg/*.*"
frame_2=load_images_from_folder_2(mypath)
print(frame_2)
Комментарии:
1. Вероятно, вам потребуется загрузить 6,22 МБ дополнительной оперативной памяти.
Ответ №1:
Ошибка просто указывает, что у вас закончилась оперативная память, заполнив ее изображениями. Другими словами, у вас слишком много изображений в папке ‘deepfake_data’, чтобы поместиться во временной памяти вашего компьютера.
Возможные обходные пути, учитывая очень ограниченную информацию, представленную в вопросе:
- Запустите свою программу на подмножествах изображений одновременно (загрузите N изображений, обработайте, удалите, повторите).
- Используя ту же идею для N = 1: обрабатывайте изображение по мере его загрузки, т.е. в памяти всегда хранится только одно изображение
- Уменьшите количество изображений перед добавлением в список и т. Д. Каждое из них занимает меньше памяти
- Рассмотрите возможность работы с облачными сервисами, у которых больше оперативной памяти, чем у вас, например, Google Colab.
Дополнительная информация значительно сузит диапазон ответов.
Ответ №2:
На самом деле проблема не в оперативной памяти, проблема в адресном пространстве. Независимо от того, сколько оперативной памяти у вас в системе, 32-разрядная версия Python по умолчанию может получить доступ только к 2 ГБ оперативной памяти.
Попробуйте установить 64-разрядные версии Python и OpenCV, в которых должно быть достаточно адресного пространства, даже если вы в конечном итоге переключаетесь на диск.