6

我一直在尝试使用 OpenCV 和 Visual Studio 2008 创建一个应用程序,从网络摄像头捕获图像,对其应用过滤器,然后将它们写入 AVI 文件。一切正常,除了创建 AVI 文件。

问题是它可以在我的电脑上运行,但它不能在我同事的电脑上运行。其原因(我认为)是他没有必要的视频编码器供 OpenCV 使用。

cvCreateVideoWriter 函数不返回 NULL,但我最终在磁盘上得到了一个 0kb 的文件。

4

3 回答 3

21

为什么不测试所有编解码器,以便播放保存:

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 中)。

于 2009-07-16T11:49:54.257 回答
3

在 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 的选项。

于 2015-07-14T08:04:05.383 回答
1

问题是我的同事安装了旧版本的 OpenCV。如果我使用新的 OpenCV,它有一个编码器,它可以完成所有工作。

于 2009-07-16T14:53:55.193 回答