9

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

4

4 回答 4

3

如果您在 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 处理的每一帧。

于 2013-03-31T15:26:52.463 回答
3

根据 OpenCV 的旧页面

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

最近的OpenCV 文档也提到了一些替代方案,例如JPG2000LAGSLagarith Lossless Codec)。

前段时间有人发了一条消息,解释了他是如何使用 OpenCV 和 FFmpeg 以无损压缩方式渲染视频的。

于 2013-03-31T16:53:02.717 回答
1

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

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

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

于 2017-04-06T07:52:56.213 回答
0

在 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));
于 2019-02-12T22:05:58.573 回答