В следующем коде я пытаюсь загрузить видеофайлы и извлечь кадры с помощью 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 больше ячеек.