Tifffile无法解压JPEG因为JPEG不在TIFF的解压器中。

3
import tifffile
f = 'some.tif'
img = tifffile.imread(f)

产生错误:
~/.conda/envs/cmap_py3/lib/python3.6/site-packages/tifffile/tifffile.py in imread(files, **kwargs)
    443     if isinstance(files, basestring) or hasattr(files, 'seek'):
    444         with TiffFile(files, **kwargs_file) as tif:
--> 445             return tif.asarray(**kwargs)
    446     else:
    447         with TiffSequence(files, **kwargs_seq) as imseq:

~/.conda/envs/cmap_py3/lib/python3.6/site-packages/tifffile/tifffile.py in asarray(self, key, series, out, validate, maxworkers)
   1900                     typecode, product(series.shape), out=out, native=True)
   1901         elif len(pages) == 1:
-> 1902             result = pages[0].asarray(out=out, validate=validate)
   1903         else:
   1904             result = stack_pages(pages, out=out, maxworkers=maxworkers)

~/.conda/envs/cmap_py3/lib/python3.6/site-packages/tifffile/tifffile.py in asarray(self, out, squeeze, lock, reopen, maxsize, validate)
   3376             if self.compression not in TIFF.DECOMPESSORS:
   3377                 raise ValueError(
-> 3378                     'cannot decompress %s' % self.compression.name)
   3379             if 'SampleFormat' in tags:
   3380                 tag = tags['SampleFormat']

ValueError: cannot decompress JPEG

注意:似乎我只在处理较大的tif图像时会遇到错误。此外,tifffile版本为0.15.1。

更新-在使用pip安装imagecodes>=2018.10.22之后,我现在遇到了以下错误:

img=tifffile.imread(f)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/somename/.conda/envs/cmap_py3/lib/python3.6/site-packages/tifffile/tifffile.py", line 581, in imread
return tif.asarray(**kwargs)
  File "/home/somename/.conda/envs/cmap_py3/lib/python3.6/site-packages/tifffile/tifffile.py", line 2042, in asarray
maxworkers=maxworkers)
  File "/home/somename/.conda/envs/cmap_py3/lib/python3.6/site-packages/tifffile/tifffile.py", line 3813, in asarray
strip = decompress(strip)
  File "/home/somename/.conda/envs/cmap_py3/lib/python3.6/site-packages/tifffile/tifffile.py", line 3700, in decompress
out)
  File "/home/somename/.conda/envs/cmap_py3/lib/python3.6/site-packages/imagecodecs/imagecodecs.py", line 678, in jpeg_decode
'JPEG tables, colorspace, and outcolorspace otions not supported')
NotImplementedError: JPEG tables, colorspace, and outcolorspace otions not supported

我看到在Linux机器上,tifffile无法打开位于~/.conda/envs/cmap_py3/lib/python3.6/site-packages/imagecodecs的大型tif文件。

__init__.py
licencses
__pycache__
imagecodecs.py

在 Windows 机器上,tifffile 可以在 ls C:\\Anaconda2\\envs\\tensorflow35\\lib\\site-packages\\imagecodecs\\ 中打开大型 tif 文件,我看到

__init__.py
licenses
__pycache__
imagecodecs.py
_imagecodecs.cp35-win_amd64.pyd
_jpeg12.cp35-win_amd64.pyd

2
你的TIFF文件是JPEG压缩的,这是相对较新的。你从哪里得到它的?使用了什么应用程序?你可以在命令行上使用ImageMagick将其重新压缩为使用LZW压缩,方法是 magick input.tif -compress lzw output.tif - Mark Setchell
2
要读取带有JPEG压缩的TIFF文件,请使用tifffile>=2018.10.18imagecodecs>=2018.10.22 - cgohlke
我似乎已经安装了imagecodecs 20.18.222,但是当我导入它时,我会得到一个错误.../site-packages/imagecodecs/__init__.py:11: UserWarning: No Module named 'imagecodecs._imagecodecs` The _imagecodecs Cython extension module could not be found. Using a fallback module with limited functionality and performance. `\n\nThe _imagecodecs Cython extension module could not be found.\n'。然后imagecodecs.__version__显示为2018.10.21.py - user3731622
我指的是 imagecodecs 20.18.22 - user3731622
1
今天我使用最新版本的Cython和imagecodecs遇到了完全相同的问题。有什么想法如何解决它? - FiReTiTi
显示剩余3条评论
1个回答

0

我认为我和你一样也遇到了同样的问题,@user3731622

尝试一下这段代码,正如 @cgohlke 所推荐的:

!pip install tifffile 
!pip install imagecodecs 
import numpy 
import tifffile as tiff 
img = tiff.imread('/content/gdrive/My Drive/My Driver/imageToDriveExample.tif') 
matrix = img[:,:,:] 
print(matrix)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接