如何在Python中高效地存储用于机器学习的视频帧而不会耗尽内存

siotufzp  于 2023-04-10  发布在  Python
关注(0)|答案(1)|浏览(121)

我试图创建一个模型来处理帧预测,所以我试图通过阅读视频文件来存储帧来创建一个数据集,以便我可以使用它来训练模型与监督学习。我计划存储三帧的组,但我很快就用完了第一个视频的内存,当这样做时。我只是想知道这是否可能,也许有'有一些不同的方法来存储帧而不耗尽内存,或者我应该在训练模型时一次只阅读部分数据,或者有其他解决方案。
我尝试存储帧的位置的代码如下所示:

def get_data(path):
data = []
video = []
for v in os.listdir(path):
    print(v)
    video = cv2.VideoCapture(path+"/"+v)
    print(video.get(cv2.CAP_PROP_FPS))
    ret, frame_one = video.read()
    ret, frame_two = video.read()
    max = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
    frame_num = 2
    while video.isOpened():
        ret, frame_three = video.read()
        if ret == True:
            data.append((frame_one, frame_two, frame_three))
            frame_one = frame_two
            frame_two = frame_three
            frame_num += 1
            print(frame_num,'/',max)
            if cv2.waitKey(1) & 0xFF == ord('q'):  # on press of q break
                break
        else:
            break
return data
voase2hg

voase2hg1#

几分钟的视频可以有数百帧。
在本地存储这些帧是不明智的。你会耗尽内存。正如你所承认的那样
你可以使用cloudinary或s3 bucket将框架图片转换为url,然后上传到数据库,同时从内存中删除框架。
坚韧的右派

相关问题