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 не может открыть большой tif в ~/.conda/envs/cmap_py3/lib/python3.6/site-packages/imagecodecs
, я вижу
__init__.py
licencses
__pycache__
imagecodecs.py
На машине с Windows, на которой tifffile может открыть большой tif в ls C:\\Anaconda2\\envs\\tensorflow35\\lib\\site-packages\\imagecodecs\\
, я вижу
__init__.py
licenses
__pycache__
imagecodecs.py
_imagecodecs.cp35-win_amd64.pyd
_jpeg12.cp35-win_amd64.pyd
Я не знаю первоисточник изображения. Кроме того, это на машине с Linux. Кажется, та же версия tifffile может открыть изображение на моей машине с Windows. Я пробовал посмотреть свои библиотеки Python и другие зависимости, но не могу найти проблему.
Чтобы читать файлы TIFF со сжатием JPEG, используйте tifffile> = 2018.10.18 с imagecodecs> = 2018.10.22
Кажется, у меня установлен 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
Я имел ввиду imagecodecs 20.18.22
Сегодня я столкнулся с той же проблемой, используя последние версии как Cython, так и кодеков изображений. Есть идеи, как это исправить?
Я не нашел ответа с помощью tifffile. Я использовал opencv, чтобы открыть файл.
@cgohlke Я установил последние кодеки изображений и tifffile с помощью pip install, но по-прежнему получаю эту ошибку ... Есть идеи, что могло пойти не так? Благодарность !
Думаю, у меня были те же проблемы, что и у вас, @ 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)
Ваш файл TIFF сжат в формате JPEG, что относительно недавно. Откуда ты это взял? Какое приложение? Вы можете повторно сжать его, чтобы использовать сжатие LZW вместо этого в командной строке с помощью ImageMagick, используя
magick input.tif -compress lzw output.tif