在没有压缩的情况下在opencv中保存帧

时间:2013-01-04 09:37:34

标签: c++ opencv

我正在尝试使用 imwrite() OpenCV函数。我想用 .TIFF 扩展名保存帧。我遇到的问题是保存的图像被压缩,所以我不能使用它们。知道我怎么能逃脱这种压缩?

提前致谢

3 个答案:

答案 0 :(得分:2)

不要介意sietschie所说的。 TIFF标志在具有LZW压缩的opencv二进制文件中进行了硬编码。您可以关闭它(注释掉)或更改它。 在:

3rdparty/libtiff/tiff.h

删除此行:

#define     COMPRESSION_LZW     5       /* Lempel-Ziv  & Welch */

然后编译。普雷斯托。 除此之外的Tiff选项会自动设置(8位,16位,颜色,rgb,rgba等),具体取决于您的图像

答案 1 :(得分:1)

根据documentation OpenCV,只公开了一组用于编写图像文件的有限选项。 不属于TIFF文件。

因此,除非您想使用自己的函数或修改OpenCV源,否则这是不可能的。 我建议使用另一种未压缩的格式来保存像PXM或BMP这样的帧,除非你有一些特定的理由使用TIFF文件。

答案 2 :(得分:0)

最简单的方法是重新编译OpenCV或直接使用libtiff,但我认为改变3rdparty / libtiff / tiff.h并不是一个好主意:在修改之后你无法使用OpenCV保存压缩的TIFF,并且非Windows系统通常有单独的libtiff(不作为OpenCV的一部分)。

我建议更简单的方法(仍然是OpenCV重新编译,但是你可以节省编写压缩tiff的可能性,而不是直接更改libtiff): saving uncompressed TIFFs with OpenCV