我一直在尝试使用 OpenCV 和 Visual Studio 2008 创建一个应用程序,从网络摄像头捕获图像,对其应用过滤器,然后将它们写入 AVI 文件。一切正常,除了创建 AVI 文件。
问题是它可以在我的电脑上运行,但它不能在我同事的电脑上运行。其原因(我认为)是他没有必要的视频编码器供 OpenCV 使用。
cvCreateVideoWriter 函数不返回 NULL,但我最终在磁盘上得到了一个 0kb 的文件。
为什么不测试所有编解码器,以便播放保存:
CV_FOURCC('P','I','M','1') = MPEG-1 codec
CV_FOURCC('M','J','P','G') = motion-jpeg codec (does not work well)
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec
-1 的编解码器代码将打开编解码器选择窗口(在 Windows 中)。
在 OpenCV 3.0.0 中,ffmpeg 的 readme.txt 说
“还有我们自包含的运动 jpeg 编解码器,您可以毫无顾虑地使用它。它在 AVI 容器(“.avi”)中处理 CV_FOURCC('M', 'J', 'P', 'G') 流)。”
(来源\3rdparty\ffmpeg\readme.txt)
-1 和 cv::VideoWriter::fourcc('M', 'J', 'P', 'G') 是唯一适用于 Windows 8.1 的选项。
问题是我的同事安装了旧版本的 OpenCV。如果我使用新的 OpenCV,它有一个编码器,它可以完成所有工作。