我有一个问题,通过使用OpenCV类VideoCapture在循环中打开许多视频文件(例如200)。下面你可以找到我的代码。OpenCV VideoCapture无法打开许多视频文件
更具体地说,我的程序成功地打开了一定数量的视频(通常是171-173),但是无法打开其他视频。我甚至试图打开总是相同的文件(如下面的例子),但行为是相同的。
在我看来,它不应该是一个内存泄漏问题(实际上有内存泄漏,但总共只消耗约50MB)。我认为这与以下事实有关:当每个视频被打开时,多个线程也被打开并且从不关闭,因此它们累积。但我不知道这是否是真正的原因,或者如果是,如何解决。
我使用Visual Studio编译和Windows 7操作系统。
如果您有任何线索和/或解决方案,请让我知道。
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
}
我觉得你可以很容易地试着重现这个问题,因为代码很简单。
第一个问题...视频文件有多大? – TomP89 2012-04-19 08:02:36
相当小,介于1和20 MB之间 – user1343279 2012-04-19 08:15:21
我想你可能会耗尽内存。你正在运行32位或64位的Windows?你有多少内存?最糟糕的情况下,200 x 20mb视频= 4GB – TomP89 2012-04-19 08:42:46