OpenCV VideoCapture 無法打開許多視頻檔案
OpenCV VideoCapture fail to open many video files
本文关键字:VideoCapture OpenCV 更新时间:2023-10-16
我使用 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
}
我认为您可以轻松地尝试重现此问题,因为代码非常简单。
我在Mac OS X上使用OpenCV 2.3.0,运行代码没有问题。
您可能需要将版本升级到 2.3.1,然后重试。如果问题仍然存在,则可能是特定于Windows实现的问题,甚至可能只是特定于Windows 7的问题。
另一个疯狂的猜测是使用 OpenCV 的 C 接口而不是您现在使用的C++接口来实现上面的程序。我过去遇到过使用这个技巧修复的问题(与视频无关)。我不建议混合使用接口,所以如果你打算用C接口做一些事情,不要在你的程序中使用OpenCV的C++接口:
for (int j=0; j<200; j++)
{
CvCapture* capture = cvCaptureFromAVI("MyVideo.mp4");
if (!capture)
{
cout << "Video #" << j << " could not be opened" << endl;
// Prevent calling cvReleaseCapture() on a capture that didn't succeeded
continue;
}
cvReleaseCapture(&capture);
}
我不记得是cvCaptureFromAVI()
还是cvCreateFileCapture()
.请核实!
相关文章:
- 如何在 opencv 中使用 cv::VideoCapture::waitAny()
- OpenCV VideoCapture Partial Frame Corruption
- OpenCV VideoCapture 无法打开文件,我做错了什么?
- OPENCV VIDEOCAPTURE说视频有0帧(C 和Python)
- OpenCV VideoCapture无法解析MJPG流
- OpenCV 中 VideoCapture 对象的状态
- 无法使用OpenCV从辅助网络摄像头读取VideoCapture中的帧
- Qt 5.2/OpenCV 2.4.8-无法通过VideoCapture打开视频文件
- OpenCV videoCapture 为 iOS 应用程序文档目录中的文件提供了错误的属性
- 在OpenCV方法VideoCapture.open()中使用设备名称而不是ID
- OpenCV VideoCapture::set()返回false,但成功
- C++/OpenCV-从迭代器接收的字符串的VideoCapture失败
- 使用 OpenCV C++ 界面是否需要释放使用 VideoCapture 创建的相机捕获(int 设备?
- VideoCapture select timeout with OpenCV 3.0.0-rc1
- OpenCV VideoCapture 無法打開許多視頻檔案
- OpenCV VideoCapture在Raspberry Pi 2上总是失败
- OpenCV VideoCapture只有在断点后才能正常工作
- 释放OpenCV::VideoCapture的内存(或正确使用cvRelease)
- 使用VideoCapture (OpenCV)从图像创建视频
- 华硕Xtion Pro Live无法从VideoCapture OpenCV中抓取图像