opencv中的视频无损压缩

时间:2013-03-31 11:32:04

标签: opencv video-processing

我正在开发一个视频处理项目,该项目涉及某种加密,使用来自相机的给定帧的简单XOR操作和关键图像,最后存储视频文件。 对于解密阶段,使用相同图像的XOR操作将获得原始帧。但问题是,当我解密框架看起来非常嘈杂,并发现它是因为我在存储时使用的有损图像压缩。 opencv还有其他任何无损图像压缩文件吗?

4 个答案:

答案 0 :(得分:2)

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

否则,只需检查列表http://opencv.willowgarage.com/wiki/documentation/cpp/highgui/VideoWriter

中的所有可能性

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

答案 1 :(得分:1)

根据OpenCV的old page

  

有几种无损视频压缩器可供选择。但是,并非所有平台同时支持单个。寻找HuffYUV,CorePNG,Motion PNG或Motion JPEG2000。

最近OpenCV docs提及了几个替代方案,例如 JPG2000 LAGS Lagarith Lossless Codec )。

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

答案 2 :(得分:1)

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

  

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

     

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

答案 3 :(得分: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));