我正在尝试使用OpenCV函数imread
在python中打开两个不同的TIFF文件image = cv2.imread(os.path.join(folder, file), -1)
第一个文件打开没有任何问题,但是当我尝试打开第二个文件时,imread返回'None'。文件之间的唯一区别是第二个文件是未压缩的。
这两个tiff图片的属性页:
我还尝试使用PIL和matplotlib打开第二个文件但没有成功。
有没有人在python中成功打开过未压缩的16位TIFF图像?
Here's示例文件。如果您想查看图像(Google云端硬盘不支持查看),请下载并使用InfranView打开
最好的问候,
松德雷
答案 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模块成功打开了图像。