【问题标题】:OpenCV videos across platform跨平台的 OpenCV 视频
【发布时间】:2010-11-13 04:52:52
【问题描述】:

我正在 Linux 机器上使用 OpenCV 编写视频。我想在 Windows 机器上使用 OpenCV 阅读相同的视频。我无法使用 openCV 中提供的标准编解码器来执行此操作。

谁能建议我如何跨两个平台读/写视频?

【问题讨论】:

    标签: windows linux video cross-platform opencv


    【解决方案1】:

    我认为问题不在于 OpenCV,我认为问题在于编解码器,正如您所提到的。我也不认为 OpenCV 附带编解码器...仔细检查您是否在 Windows 下安装了正确的编解码器。

    你看过video codecs上的文档吗?

    【讨论】:

      【解决方案2】:

      OpenCV Wiki 直接解决了这个问题。请参阅http://opencv.willowgarage.com/wiki/VideoCodecs,特别是标题“兼容性列表”。

      不幸的是,所有三个平台(Linux、Windows 和 OSX)都支持的唯一编解码器是“DIB”、“I420”和“IYUV”,它们都是未压缩的视频编解码器,因此文件大小非常大。

      该 wiki 还列出了一些可供尝试的编解码器,它们可以在任何两个平台上工作,但不能在所有三个平台上工作。

      如果您决定使用未压缩的视频文件,您可以使用VirtualDub 之类的程序在您的 Windows 机器上将它们转换为文件大小较小的文件。


      编辑:仅供参考,在 Windows 上,我在 Motion-JPEG 中有 OpenCV 输出,然后我在 Directstream 复制模式下使用 VirtualDub 重新保存文件,从而更正了电影索引的错误。然后这些 M-JPEG 视频文件默认在 Mac 和 Windows 上播放。

      如果我尝试将视频读入 OpenCV,我通常会先将我的视频转换为 Cinepak(使用虚拟配音、quicktime 等),然后将其输入 OpenCV。我使用 Cinepak 是因为出于某种原因,Cinepak 编码器似乎比 MJPEG 编码器更普遍。

      【讨论】:

      • 如何让 opencv 能够输出 Motion-JPEG?我的崩溃并说编解码器不可用。
      • 这是我使用的相关代码行。我在 Windows XP 上。 exp->Vid=cvCreateVideoWriter(MovieFileName,CV_FOURCC('M','J','P','G'), 30, cvSize(xdim ,ydim ),0); 我认为(尽管我不肯定)MJPEG 编码器默认带有 OpenCV。我一直认为是 OpenCV 的 MJPEG 实现弄乱了索引文件,这就是为什么我必须在任何其他视频播放器读取它之前使用 VirtualDub 进行第二次传递和直接流复制。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      相关资源
      最近更新 更多