scikit-изображение не может импортировать изображение - PullRequest
3 голосов
/ 03 апреля 2020

Среда:

  • Python 3.7.0
  • После создания virtualenv, scikit-образ устанавливается через pip.
  • scikit-image==0.16.2, Pillow==7.1.1
  • Анаконда на Linux

Исходный код:

from skimage.io import imread
file_path = "image_you_like.png"
img = imread(file_path, plugin="pil", as_gray=False)

Ожидаемый результат:

img является numpy массив изображений.

Фактический результат:

Не доверяйте номеру строки, потому что я вставил несколько функций печати. ​​

~/Python/experiment/venv/lib/python3.7/site-packages/PIL/PngImagePlugin.py in _seek(self, frame, rewind)
    789 
    790             try:
--> 791                 cid, pos, length = self.png.read()
    792             except (struct.error, SyntaxError):
    793                 break

AttributeError: 'NoneType' object has no attribute 'read'

Вопрос

Как я могу предотвратить эту ошибку и прочитать изображение?

После некоторого анализа я обнаружил, что imread работает, если plugin="matplotlib" или plugin="imageio". Проблема в том, что некоторые функции, такие как skimage.data.camera, вызывают imread с plugin="pil", и поэтому я не могу попробовать любой пример изображения scikit-image.

[EDIT]

from skimage.io.manage_plugins import plugin_store
print(plugin_store["imread"])

печатает следующее

[('imageio', <function imread at 0x7efe39112c20>), ('matplotlib', <function imread at 0x7efe37f51290>)]

Таким образом, "pil" не может быть найден в списке.

1 Ответ

2 голосов
/ 04 апреля 2020

Об этой проблеме сообщили на github .

Для пользователя самое простое решение - понизить версию до 6.2.2.

...