我正在做一个视频处理项目,涉及到某种加密,使用简单的XOR运算从相机与一个关键图像的给定帧,并最终存储视频文件。而对于解密阶段,与同一图像的XOR运算将得到原始帧。但问题是,当我解密的帧似乎是非常嘈杂,并发现,这是因为有损图像压缩foramt我使用opencv还有其他无损图像压缩格式吗?
ljsrvy3e1#
根据OpenCV的old page:有几种无损视频压缩器可用。然而,没有一种在所有平台上同时支持。寻找HuffYUV,CorePNG,Motion PNG或Motion JPEG2000。最近的OpenCV文档也提到了一些替代方案,比如JPG2000和LAGS(Lagarith Lossless Codec)。不久前,someone posted a message解释了他如何使用OpenCV和FFmpeg来渲染无损压缩的视频。
k3bvogb12#
如果你是在windows上工作,你可以使用CV_FOURCC_PROMPT作为VideoWriter构造函数的第二个参数-它将允许你从列表中选择编解码器并设置各种选项。只是为了测试,你可以使用uncompressed avi (aka full frames [not compressed])。它将产生巨大的文件,但应该工作正常。请注意,HighGui是“一个简单的实验工具”,所以它可能无法提供您正在寻找的功能。如果是这样,您将不得不使用其他一些库,并为它提供由opencv处理的每个帧。
CV_FOURCC_PROMPT
VideoWriter
uncompressed avi (aka full frames [not compressed])
llew8vvj3#
官方文档显示http://docs.opencv.org/trunk/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8881ba2b2da22cff5487465b5大多数编解码器都是有损的。如果您想要无损视频文件,则需要使用无损编解码器(例如FFMPEG FFV 1,霍夫曼HFYU,Lagarith LAGS等...)如果启用了FFMPEG,则使用编解码器=0;fps=0;您可以创建未压缩(原始)视频文件。
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));
4条答案
按热度按时间ljsrvy3e1#
根据OpenCV的old page:
有几种无损视频压缩器可用。然而,没有一种在所有平台上同时支持。寻找HuffYUV,CorePNG,Motion PNG或Motion JPEG2000。
最近的OpenCV文档也提到了一些替代方案,比如JPG2000和LAGS(Lagarith Lossless Codec)。
不久前,someone posted a message解释了他如何使用OpenCV和FFmpeg来渲染无损压缩的视频。
k3bvogb12#
如果你是在windows上工作,你可以使用
CV_FOURCC_PROMPT
作为VideoWriter
构造函数的第二个参数-它将允许你从列表中选择编解码器并设置各种选项。只是为了测试,你可以使用uncompressed avi (aka full frames [not compressed])
。它将产生巨大的文件,但应该工作正常。请注意,HighGui是“一个简单的实验工具”,所以它可能无法提供您正在寻找的功能。如果是这样,您将不得不使用其他一些库,并为它提供由opencv处理的每个帧。
llew8vvj3#
官方文档显示http://docs.opencv.org/trunk/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8881ba2b2da22cff5487465b5
大多数编解码器都是有损的。如果您想要无损视频文件,则需要使用无损编解码器(例如FFMPEG FFV 1,霍夫曼HFYU,Lagarith LAGS等...)
如果启用了FFMPEG,则使用编解码器=0;fps=0;您可以创建未压缩(原始)视频文件。
envsm3lx4#
在Debian Linux上(使用ffmpeg):