在OpenCV python

时间:2018-01-05 07:23:19

标签: python opencv tiff

我正在尝试使用OpenCV函数imread

在python中打开两个不同的TIFF文件
image = cv2.imread(os.path.join(folder, file), -1)

第一个文件打开没有任何问题,但是当我尝试打开第二个文件时,imread返回'None'。文件之间的唯一区别是第二个文件是未压缩的。

这两个tiff图片的属性页: Property page for both tiff images

我还尝试使用PIL和matplotlib打开第二个文件但没有成功。

有没有人在python中成功打开过未压缩的16位TIFF图像?

Here's示例文件。如果您想查看图像(Google云端硬盘不支持查看),请下载并使用InfranView打开

最好的问候,
松德雷

2 个答案:

答案 0 :(得分:2)

您的图片不是有效的TIFF文件,因为它缺少“Photometric Interpretation”,即标记262.

您可以看到 libtiff 附带tiffdump的各种标签

tiffdump Background.tif

<强>输出

Background.tif:
Magic: 0x4949 <little-endian> Version: 0x2a <ClassicTIFF>
Directory 0: offset 2887048 (0x2c0d88) next 0 (0)
ImageWidth (256) SHORT (3) 1<1388>
ImageLength (257) SHORT (3) 1<1040>
BitsPerSample (258) SHORT (3) 1<16>
Compression (259) SHORT (3) 1<1>
StripOffsets (273) LONG (4) 1040<8 2784 5560 8336 11112 13888 16664 19440 22216 24992 27768 30544 33320 36096 38872 41648 44424 47200 49976 52752 55528 58304 61080 63856 ...>
SamplesPerPixel (277) SHORT (3) 1<1>
RowsPerStrip (278) SHORT (3) 1<1>
StripByteCounts (279) LONG (4) 1040<2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 2776 ...>
PlanarConfig (284) SHORT (3) 1<1>
ResolutionUnit (296) SHORT (3) 1<1>

您可以使用 libtiff 附带的tiffset实用程序设置代码,例如:

tiffset -s 262 1 YourUnhappyImage.tif

或者,您可以更正生成它的应用程序。

答案 1 :(得分:2)

找到问题的解决方案,实际上已经回答here。使用tifffile模块成功打开了图像。