Управление памятью при загрузке видеофайлов - PullRequest
0 голосов
/ 12 сентября 2018

В следующем коде я пытаюсь загрузить видеофайлы и извлечь кадры с помощью opencv. Тем не менее, код требует нескольких ГБ памяти, пока не произойдет сбой. Файлы в «data / recordings /» занимают всего пару МБ. Как я могу более эффективно управлять своими данными?

import numpy as np
import cv2
import os

dir_recordings = 'data/recordings/'
frames = []
for file in os.listdir(dir_recordings):
    if file.endswith(".flv"):
        file_path = os.path.join(dir_recordings, file)
        print(file_path)

        # Create a VideoCapture object and read from input file
        cap = cv2.VideoCapture(file_path)

        # Check if camera opened successfully
        if (cap.isOpened() == False):
            print("Error opening video stream or file")

        # Read until video is completed
        while (cap.isOpened()):
            # Capture frame-by-frame
            ret, frame = cap.read()
            if ret == True:
                frames.append(image)
            else:
                break

        # When everything done, release the video capture object
        cap.release()

Когда я сохраняю np.arrayframes).tofile('data/myarray'), я заметил, что его размер составляет 300 МБ, если я просто выбираю просмотр видео. С другой стороны, когда я загружаю набор данных mnist из keras с помощью

from keras.datasets import mnist
(x_train, _), (x_test, _) = mnist.load_data()

У меня нет проблем с памятью, хотя в массиве mnist больше ячеек.

...