opencv中的视频无损压缩

h7wcgrx3  于 2023-04-07  发布在  其他
关注(0)|答案(4)|浏览(478)

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

ljsrvy3e

ljsrvy3e1#

根据OpenCV的old page
有几种无损视频压缩器可用。然而,没有一种在所有平台上同时支持。寻找HuffYUV,CorePNG,Motion PNG或Motion JPEG2000。
最近的OpenCV文档也提到了一些替代方案,比如JPG2000LAGSLagarith Lossless Codec)。
不久前,someone posted a message解释了他如何使用OpenCV和FFmpeg来渲染无损压缩的视频。

k3bvogb1

k3bvogb12#

如果你是在windows上工作,你可以使用CV_FOURCC_PROMPT作为VideoWriter构造函数的第二个参数-它将允许你从列表中选择编解码器并设置各种选项。只是为了测试,你可以使用uncompressed avi (aka full frames [not compressed])。它将产生巨大的文件,但应该工作正常。
请注意,HighGui是“一个简单的实验工具”,所以它可能无法提供您正在寻找的功能。如果是这样,您将不得不使用其他一些库,并为它提供由opencv处理的每个帧。

llew8vvj

llew8vvj3#

官方文档显示http://docs.opencv.org/trunk/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8881ba2b2da22cff5487465b5
大多数编解码器都是有损的。如果您想要无损视频文件,则需要使用无损编解码器(例如FFMPEG FFV 1,霍夫曼HFYU,Lagarith LAGS等...)
如果启用了FFMPEG,则使用编解码器=0;fps=0;您可以创建未压缩(原始)视频文件。

envsm3lx

envsm3lx4#

在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));

相关问题