Python 如何解决TIFFILERROR:不是Tiff文件和字节问题,KeyError:b'\x89P';

Python 如何解决TIFFILERROR:不是Tiff文件和字节问题,KeyError:b'\x89P';,python,scipy,tiff,symfit,Python,Scipy,Tiff,Symfit,我正在建立一个计算机视觉项目来检测和处理绿色荧光蛋白。我不断收到关于我的文件不是Tiff图像和字节错误的错误。我不太明白他们的意思,也没有在网上找到任何相关信息 我已经确保文件路径正确,并尝试将文件更改为Tiff格式。现在在Finder上,它说这是一个TIFF图像,但仍然给出了一个错误 import tifffile from colicoords import Data, Cell, CellPlot import matplotlib.pyplot as plt binary_img =

我正在建立一个计算机视觉项目来检测和处理绿色荧光蛋白。我不断收到关于我的文件不是Tiff图像和字节错误的错误。我不太明白他们的意思,也没有在网上找到任何相关信息

我已经确保文件路径正确,并尝试将文件更改为Tiff格式。现在在Finder上,它说这是一个TIFF图像,但仍然给出了一个错误

import tifffile
from colicoords import Data, Cell, CellPlot
import matplotlib.pyplot as plt


binary_img = tifffile.imread('organoid_images/gfp/cells1.tif')
data = Data()
data.add_data(binary_img, 'binary')
cell = Cell(data)
cell.optimize()
cp = CellPlot(cell)

plt.figure()
cp.imshow('flu_514', cmap='viridis', interpolation='nearest')
cp.plot_outline()
cp.plot_midline()
plt.show()
错误消息:

Traceback (most recent call last):
  File "/Users/CosmoCrash/opencvblobs/lib/python3.7/site-packages/tifffile/tifffile.py", line 2236, in __init__
    byteorder = {b'II': '<', b'MM': '>'}[header[:2]]
KeyError: b'\x89P'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "gfp.py", line 6, in <module>
    binary_img = tifffile.imread('organoid_images/gfp/cells1.tif')
  File "/Users/CosmoCrash/opencvblobs/lib/python3.7/site-packages/tifffile/tifffile.py", line 715, in imread
    with TiffFile(files, **kwargs_file) as tif:
  File "/Users/CosmoCrash/opencvblobs/lib/python3.7/site-packages/tifffile/tifffile.py", line 2238, in __init__
    raise TiffFileError('not a TIFF file')
tifffile.tifffile.TiffFileError: not a TIFF file
回溯(最近一次呼叫最后一次):
文件“/Users/cosmoscrash/opencvblobs/lib/python3.7/site packages/tiffile/tiffile.py”,第2236行,在__
字节顺序={b'II':''}[头[:2]]
KeyError:b'\x89P'
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“gfp.py”,第6行,在
binary_img=tiffile.imread('organoid_images/gfp/cells1.tif'))
imread中的文件“/Users/cosmoscrash/opencvblobs/lib/python3.7/site packages/tiffile/tiffile.py”,第715行
TIFF文件(文件,**kwargs_文件)作为tif:
文件“/Users/cosmoscrash/opencvblobs/lib/python3.7/site packages/tiffile/tiffile.py”,第2238行,在__
引发TIFF文件错误('不是TIFF文件')
tifffile.tifffile.TiffFileError:不是TIFF文件

\x89P
开头的文件是一个
PNG
文件,而不是
TIFF
,因为这是一个PNG签名,而TIFF文件以
II
开头(如果是英特尔顺序),或者
MM
开头(如果是摩托罗拉顺序)

如果在Linux/macOS上,请尝试运行:

file cells1.tif
请参见Warren建议的PNG签名说明


有关TIFF头的描述,请参见。

正如@MarkSetchell所回答的,您的文件实际上是一个PNG文件;字节
\x89P
(即
\x89\x50
)是中的前两个字节。@WarrenWeckesser感谢您提出的改进建议。我已经把它编辑成我的答案了。谢谢。这个程序现在可以运行了,但它遇到了另一个问题。我得到一个值错误,找不到任何关于它的信息。错误:ValueError:TiffPage 0:无法解压缩LZW请更新您的问题,然后显示您的当前代码并共享您的图像。如果您无法将图像上传到堆栈溢出,请添加到Dropbox或Google Drive或类似内容的链接。