【发布时间】:2012-04-30 17:04:11
【问题描述】:
我在使用 OpenCV 类 VideoCapture 循环打开多个视频文件(例如 200 个)时遇到问题。您可以在下面找到我的代码。
更具体地说,我的程序成功打开了一定数量的视频(通常为 171-173),但随后无法打开其他视频。我什至尝试总是打开相同的文件(如下例所示),但行为是相同的。
在我看来应该不是内存泄漏问题(其实是内存泄漏,但总共只消耗了50MB左右)。我认为这与每个视频打开时,几个线程也打开并且从不关闭,因此它们累积的事实有关。但我不知道这是否是真正的原因,或者如果是,如何解决。
我使用Visual Studio编译,Windows 7 OS。
如果您有任何线索和/或解决方案,请告诉我。
string video_filename = "MyVideo.mp4";
for(int j=0; j<200; j++)
{
VideoCapture video(video_filename);
if(!video.isOpened())
{
cout << "Video #" << j << " could not be opened" << endl;
}
video.release(); // I've tried also to comment this out
}
我认为您可以轻松尝试重现此问题,因为代码非常简单。
【问题讨论】:
-
第一个问题...视频文件有多大?
-
很小,在 1 到 20 MB 之间
-
好吧,我想您可能内存不足。你运行的是 32 位还是 64 位窗口?你有多少内存?最坏的情况,200 x 20mb 视频 = 4GB
-
- 我有 16GB 的 RAM。通过检查 Windows(64 位)的任务管理器,我的程序进程最多只需要 50 MB。这就是为什么我认为问题与内存无关。
-
对不起,我看了你的帖子,好像你的内存泄漏只占用了 50mb。