Ваше изображение представляет собой 64-битный TIFF с плавающей запятой. Вы можете видеть это с:
tiffinfo v3l1_24-34.tiff
Или с ImageMagick :
magick identify -verbose v3l1_24-34.tiff
PIL не нравятся такие вещи , так что вы либо нужно либо создать его как 32-битный:
temp = np.full(..., dtype=np.float32)
, либо, если вам нужно 64-битный, возможно, прочитайте его с помощью tifffile
:
import tifffile
...
im = tiffffile.imread('v3l1_24-34.tiff')
Если у вас есть несколько уже существующих файлов BigTIFF, которые вы хотите превратить в 32-битные файлы classi c TIFF, вы можете попробовать следующие команды:
# Use an ImageMagick version with Q16 or higher and HDRI when you run "identify -version"
magick input.tif -define quantum:format=floating-point -depth 32 output.tif
# Or use "libvips" in the Terminal
vips im_vips2tiff input.tif output.tif
Чтобы проверить, является ли файл BigTIFF или нет, используйте exiftool
и ищите BTF
следующим образом:
exiftool bigtiff.tif
ExifTool Version Number : 11.11
File Name : bigtiff.tif
Directory : .
File Size : 1024 kB
File Modification Date/Time : 2020:03:13 13:56:05+00:00
File Access Date/Time : 2020:03:13 13:56:19+00:00
File Inode Change Date/Time : 2020:03:13 13:56:11+00:00
File Permissions : rw-r--r--
File Type : BTF <--- HERE
...
...
Или используйте xxd
вот так и ищите 3-й байт 0x2b
:
xxd bigtiff.tif | more
00000000: 4949 2b00 0800 0000 1000 1000 0000 0000 II+.............
...
...
тогда как ClassicTIFF отображается как 0x2a
:
xxd classic.tiff | more
00000000: 4949 2a00 0800 1000 0000 803f 0000 803f II*........?...?