OpenCV4.5.1 VideoWriter无法打开,无论如何返回失败,与Qt+MinGW



代码如下:

cv::VideoWriter writer;
cout<<writer.open("./test001.avi",cv::CAP_FFMPEG,-1,25.0, frame.size(),1)<<endl;

我尝试了不同的编解码器和0(据说是未压缩的),它们都不起作用并返回false。然后我尝试了-1的编解码器选择,希望会出现一个菜单,但仍然没有。

然后我认为这可能与缺少ffmpeg DLL文件有关。我复制了文件"opencv_videoio_ffmpeg_64.dll"。到目录,但仍然没有。

而不是尝试不同类型的fourcc枚举器来获得正确的一个,您可以获得视频(流媒体源)源的确切编解码器。简单:

cv::VideoCapture cap(0);
int codecType = static_cast<int>(cap.get(cv::CAP_PROP_FOURCC)); 

我认为输出的原因是假的,因为编解码器类型不正确。此外,当我尝试了一些与此相关的例子,甚至有时它给出的输出为假,它正在保存帧没有问题。

你使用重载函数的原因真的是为了方便吗?如果没有,最好使用另一个更标准的open function

对不起,浪费你的时间了。我复制了错误的dll文件。应该是/bin文件夹中的opencv_videoio_ffmpeg451_64.dll,而不是/3rdparty/ffmpeg文件夹中的opencv_videoio_ffmpeg_64.dll。

两个文件内容相同,但名称不同

我也有同样的问题,我想重申Janus Li的回答。如果您未能使用FFMPEG构建并且没有意识到这一点,那么VIDEO IO将默默地失败。它不会抛出异常,但不会创建文件,也不会发生任何事情。

解决方案是确保使用FFMPEG构建或将dll从3rdparty/FFMPEG复制到bin与其他dll一起,并将其重命名为适合其他dll的格式"opencv_videoio_ffmpeg452.dll"

相关内容

  • 没有找到相关文章

最新更新