不能重复使用 OpenCV::VideoWriter

Can not reuse OpenCV::VideoWriter

我正在使用 Visual Studio 2008 和 OpenCV 2.4.5。

我有一个 class,其中包含经过处理的视频帧,我想将它们保存为视频文件。我在构造函数中创建了一个 cv::VideoWriter 对象,并通过循环将帧写入 cv::VideoWriter 对象并成功获取了想要的视频。获取第一个视频后问题就开始了。

有时我也想通过 cv::VideoWriter::release() 结束这个视频文件并通过使用不同的名称重新打开它来重用这个对象,如下所示:

outputVideo.release();

outputVideo.open("D:\example2.avi", CV_FOURCC('D','I','V','X'), 15, videoSize, true);

但我第二次意识到,VideoWriter 不会在相关路径上创建任何文件,即使 cv::VideoWriter::isOpened() 函数 returns 也是如此。

但更有趣的是,我也无法在 class 的其他任何地方创建和使用 cv::VideoWriter 对象的任何其他实例。越来越有趣的是,我可以只在构造函数中创建和使用多个实例。

尝试了很多东西;指针,不同的编解码器,在构造函数中创建对象并在其他方法中使用它们,没有任何帮助。

唯一看到只能创建一个实例,只能使用一次,释放后不能再使用或者out了无法创建新实例打开在我的 class 的构造函数中,即使是 isOpened() 方法也总是返回 true(除了第一次之外,没有在相关路径上创建文件)。在互联网上找不到任何可以帮助我解决这个奇怪问题的方法。

非常感谢任何帮助,花了我 3 个小时,但不明白为什么。

我发现这个问题是由于缺少opencv_ffmpeg.dll文件造成的。但对我来说仍然很奇怪,它在没有所需的 dll 的情况下只能工作一次。我不明白没有这个 dll 文件它是如何工作的。