【发布时间】:2014-01-26 04:52:34
【问题描述】:
这个在 python OpenCV 中使用cv2.VideoCapture 从文件中读取视频的例子内存不足:
import cv2
cap = cv2.VideoCapture('file.mp4')
while True:
ret, frame = cap.read()
在 1920x1080 分辨率下需要大约 300 帧才能用完。在 OpenCV 3.0.0 beta 和 2.4.8 中测试,在 Windows 7 64 位的最新 Pythonxy 中运行。
需要在此代码中添加什么以使其不会耗尽内存,而是在读取下一帧之前释放每一帧?
【问题讨论】:
-
视频文件一共有多少帧?
-
@herohuyongtao:示例文件中大约有 20000 帧。
-
openCV 使用
reference counting并自行释放不需要的 Mat 内存。因此,如果您不将帧的数据链接到其他地方,则不需要释放内存。在 c++ 中有一个 cv::Mat 的 .release 方法,我猜你可以尝试 python 的等效方法。 -
你可能想将你的故事附加到这个bug report
-
@berak:是的,就是这样。你知道吗,有没有旧版本没有有这个内存泄漏?