我正在尝试使用imwrite() OpenCV 函数。我想用.TIFF扩展名保存帧。我遇到的问题是保存的图像被压缩,所以我不能使用它们。知道如何摆脱这种压缩吗?
提前致谢
不要介意sietschie说什么。TIFF 标志在 opencv 二进制文件中使用 LZW 压缩进行硬编码。您可以将其关闭(将其注释掉)或更改它。在:
3rdparty/libtiff/tiff.h
删除这一行:
#define COMPRESSION_LZW 5 /* Lempel-Ziv & Welch */
然后编译。快速。根据您的图像,自动设置除此之外的 Tiff 选项(8 位、16 位、颜色、rgb、rgba 等)
根据文档, OpenCV 仅公开了一组有限的用于编写图像文件的选项。其中不属于 TIFF 文件。
所以除非你想使用自己的函数或修改 OpenCV 源代码,否则这是不可能的。我建议使用另一种未压缩格式来保存帧,例如 PXM 或 BMP,除非您有某些特定原因使用 TIFF 文件。
最简单的方法是重新编译 OpenCV 或直接使用 libtiff,但我认为更改 3rdparty/libtiff/tiff.h 不是一个好主意:在此修改后,您无法使用 OpenCV 保存压缩的 TIFF,并且在非 Windows 系统下,您通常有单独的 libtiff(不是 OpenCV 的一部分)。
我建议更简单的方法(仍然是 OpenCV 重新编译,但您可以节省编写压缩 tiff 的可能性并且不要直接更改 libtiff): 使用 OpenCV 保存未压缩的 TIFF