3

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

提前致谢

4

3 回答 3

3

不要介意sietschie说什么。TIFF 标志在 opencv 二进制文件中使用 LZW 压缩进行硬编码。您可以将其关闭(将其注释掉)或更改它。在:

3rdparty/libtiff/tiff.h

删除这一行:

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

然后编译。快速。根据您的图像,自动设置除此之外的 Tiff 选项(8 位、16 位、颜色、rgb、rgba 等)

于 2013-04-14T23:27:53.560 回答
2

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

所以除非你想使用自己的函数或修改 OpenCV 源代码,否则这是不可能的。我建议使用另一种未压缩格式来保存帧,例如 PXM 或 BMP,除非您有某些特定原因使用 TIFF 文件。

于 2013-01-04T11:29:28.753 回答
0

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

我建议更简单的方法(仍然是 OpenCV 重新编译,但您可以节省编写压缩 tiff 的可能性并且不要直接更改 libtiff): 使用 OpenCV 保存未压缩的 TIFF

于 2014-10-24T18:08:51.963 回答