【问题标题】:Lossless compression for video in opencvopencv中视频的无损压缩
【发布时间】:2020-03-30 19:34:44
【问题描述】:

我正在处理一个视频处理项目,该项目涉及某种加密,使用来自相机的给定帧与关键图像的简单异或运算,并最终存储视频文件。 对于解密阶段,对相同图像的 XOR 操作将获得原始帧。但问题是,当我解密帧时似乎很嘈杂,发现这是因为我在存储时使用了有损图像压缩格式。 opencv还有其他无损图像压缩格式吗??

【问题讨论】:

  • 尝试将图片保存为tiff

标签: opencv video-processing


【解决方案1】:

如果您在 Windows 上工作,您可以使用 CV_FOURCC_PROMPT 作为 VideoWriter 构造函数的第二个参数 - 它允许您从列表中选择编解码器并设置各种选项。只是为了测试你可以使用uncompressed avi (aka full frames [not compressed])。它会产生巨大的文件,但应该可以正常工作。

否则只需检查列表中的所有可能性

http://www.fourcc.org/codecs.php

请注意HighGui is meant as a simple tool for experimentation.(http://opencv.willowgarage.com/wiki/VideoCodecs),因此它可能无法提供您正在寻找的功能。如果是这样,您将不得不使用其他一些库并给它由 opencv 处理的每一帧。

【讨论】:

    【解决方案2】:

    根据OpenCV的old page

    有几种无损视频压缩器可用。但是,所有平台都不能同时支持任何一个。寻找 HuffYUV、CorePNG、Motion PNG 或 Motion JPEG2000。

    最近的 OpenCV docs 也提到了几个替代方案,例如 JPG2000LAGSLagarith 无损编解码器)。

    前段时间someone posted a message 解释了他如何使用 OpenCV 和 FFmpeg 以无损压缩方式渲染视频。

    【讨论】:

      【解决方案3】:

      官方文档说 http://docs.opencv.org/trunk/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8881ba2b2da22cff5487465b5

      大多数编解码器都是有损的。如果你想要无损视频文件,你需要使用 无损编解码器(例如 FFMPEG FFV1、Huffman HFYU、Lagarith LAGS、 等等……)

      如果启用了 FFMPEG,则使用 codec=0; fps=0;你可以创建一个 未压缩的(原始)视频文件。

      【讨论】:

        【解决方案4】:

        在 Debian Linux 上(使用 ffmpeg):

        int width = 640;
        int height = 480;
        bool isColor = true;
        string outFName = "out.avi";
        
        Size frameSize = Size(width, height);
        int fourcc = VideoWriter::fourcc('p', 'n', 'g', ' ');
        
        outputVideo.open(outFName, fourcc, cap.get(CAP_PROP_FPS), frameSize, isColor));
        

        【讨论】:

          猜你喜欢
          • 2023-03-16
          • 1970-01-01
          • 2012-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-19
          • 1970-01-01
          • 2014-09-28
          相关资源
          最近更新 更多