为什么我的笔记本电脑在使用Python列表时会卡住?

问题描述 投票:3回答:1

我有一个视频文件,我现在想要的是将所有视频的帧放入Python列表中。我正在使用Python的OpenCV库来完成它。但我的笔记本电脑永远不会这样做。它只是卡住了我必须切断电源重新启动它。我的猜测是由于内存不足,python列表无法处理所有帧。这是代码,我相信它是做我想要的正确方法(语法)。现在我需要为什么笔记本电脑卡住以及使用列表以外的任何解决方案。

import cv2
video = cv2.VideoCapture("myvideo.mp4")
all_frames = []
while 1:
    ret, frame = video.read()
    if ret:
        all_frames.append(frame)
        continue
    break

以下是有关可能对您有所帮助的视频的一些数据 该视频包含7000帧。 每帧具有(1080,1920)维度

python opencv
1个回答
4
投票

你不能这样做。

在读取时,帧从.mp4到原始输出未压缩,如每像素3个字节等。

所以你想存储总共7000 * 3 * 1080 * 1920字节,大约是43 Gb !!

更不用说由于append而不断调整列表的大小会产生更多的副本,所以即使你有可用的内存,这也会很长。

该计划背后的想法可能是分析框架。所以基本上你不需要同时在内存中的所有帧。

在这种情况下,读取少量它们(在旋转缓冲区中),执行形状检测分析,无论如何,存储分析的数据(小得多)并丢弃原始数据,重复(执行实时分析的程序不能存储所有数据)数据,因为它们永远在运行)

© www.soinside.com 2019 - 2024. All rights reserved.