我在使用 OpenCV 类 VideoCapture 循环打开许多视频文件(例如 200 个)时遇到问题。您可以在下面找到我的代码。
更具体地说,我的程序成功打开了一定数量的视频(通常为 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
}
我认为您可以轻松地尝试重现此问题,因为代码非常简单。