我一直在尝试使用OpenCV和Visual Studio 2008创建应用程序,从网络摄像头捕获图像,对它们应用过滤器,然后将它们写入AVI文件。 一切都有效,除了创建AVI文件。
问题是它可以在我的计算机上运行,但它不能在我同事的计算机上运行。之所以(我认为)是因为他没有必要的视频编码器供OpenCV使用。
cvCreateVideoWriter函数不返回NULL,但我最终在磁盘上有一个0kb文件。
答案 0 :(得分:20)
为什么不测试所有编解码器,以便进行保存:
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中)。
答案 1 :(得分: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的选项。
答案 2 :(得分:1)
问题是我的同事安装了旧版本的OpenCV。如果我使用新的OpenCV它有一个编码器,它完成了所有的工作。