2015-06-01 41 views
0

我正在使用Visual Studio 2008和OpenCV 2.4.5。无法重用OpenCV :: VideoWriter

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

我有时也想结束由CV :: VideoWriter这个视频文件::释放(),并用不同的名称重新打开它像下面重用此对象:

outputVideo.release(); 

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

但我意识到,对于第二次,即使cv :: VideoWriter :: isOpened()函数有趣地返回true,VideoWriter也不会在相关路径中创建任何文件。

但更有趣的是,我也不能在我的课程的其他地方创建和使用cv :: VideoWriter对象的任何其他实例。越来越有意思的是,我只能在构造函数中创建和使用多个实例。

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

我看到的唯一一件事情是我只能创建一个实例并仅使用它一次,我不能在释放它之后再次使用它,或者我无法创建新实例并在我离开时打开它我的类的构造函数,甚至isOpened()方法总是返回true(除第一次以外,没有在相关路径上创建文件)。在互联网上找不到任何关于这个奇怪问题的帮助。

任何帮助真的很感激,花了我3个小时,并不明白为什么。

+0

你是否在发布模式下编译链接调试库,反之亦然?你能否创建一个仍然给你带来问题的最小可编译示例(例如一个主函数)? – Micka

+0

@Micka谢谢你的回复。我发现这是由于缺少opencv_ffmpeg dll,但奇怪的是,它只有一次没有所需的DLL,我不知道如何。 – Horizon1710

回答

0

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