Модуль scipy.misc не имеет атрибута imread?

Я пытаюсь прочитать изображение с scipy. Однако он не принимает часть scipy.misc.imread. Что может быть причиной этого?

>>> import scipy
>>> scipy.misc
<module 'scipy.misc' from 'C:\Python27\lib\site-packages\scipy\misc\__init__.pyc'>
>>> scipy.misc.imread('test.tif')
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    scipy.misc.imread('test.tif')
AttributeError: 'module' object has no attribute 'imread'

Ответ 1

Вам нужно установить Pillow (ранее PIL). Из документы на scipy.misc:

Обратите внимание, что Pillow не является зависимостью SciPy, но функции управления изображением, указанные в списке ниже, доступны без него:

...

imread

...

После установки Pillow я смог получить доступ к imread следующим образом:

In [1]: import scipy.misc

In [2]: scipy.misc.imread
Out[2]: <function scipy.misc.pilutil.imread>

Ответ 2

imread устарела в SciPy 1.0.0 и будет удалена в 1.2.0. Используйте вместо этого imageio.imread.

import imageio
im = imageio.imread('astronaut.png')
im.shape  # im is a numpy array
(512, 512, 3)
imageio.imwrite('imageio:astronaut-gray.jpg', im[:, :, 0])

Ответ 3

imread устарела после версии 1.2.0! Поэтому, чтобы решить эту проблему, мне пришлось установить версию 1.1.0.

pip install scipy==1.1.0

Ответ 4

Для Python 3 лучше всего использовать imread в matplotlib.pyplot:

from matplotlib.pyplot import imread

Ответ 5

Вам нужна библиотека изображений Python (PIL), но увы! проект PIL, похоже, был заброшен. В частности, он не был портирован на Python 3. Поэтому, если вы хотите использовать функциональность PIL в Python 3, вам лучше использовать Pillow, который является полуофициальным форком PIL и, похоже, активно разрабатывается. На самом деле, если вам вообще нужна современная реализация PIL, я бы порекомендовал Pillow. Это так же просто, как pip install pillow. Поскольку он использует то же пространство имен, что и PIL, он, по сути, является заменой.

Насколько "полуофициальный" этот форк? Вы можете спросить. На странице About в документации по подушкам сказано следующее:

Поскольку с момента последнего выпуска PIL проходит больше времени, вероятность появления нового выпуска PIL уменьшается. Однако нам еще предстоит услышать официальное объявление "PIL is dead". Поэтому, если вы все еще хотите поддержать PIL, пожалуйста, сначала сообщите о проблемах здесь, а затем откройте соответствующие Билетные подушки здесь.

Пожалуйста, предоставьте ссылку на первый тикет, чтобы мы могли отследить проблемы.

Однако последний релиз PIL на официальном сайте PIL датирован 15 ноября 2009 года. Я думаю, что мы можем смело объявить Pillow преемником PIL после (на момент написания этой статьи) почти восьми лет отсутствия новых выпусков. Поэтому даже если вам не нужна поддержка Python 3, я советую вам отказаться от древнего дистрибутива PIL 1.1.6, доступного в PyPI, и просто установить свежую, современную, совместимую подушку.

Ответ 6

Установите библиотеку подушек, выполнив следующие команды:

pip install pillow

Обратите внимание, что выбранный ответ устарел. Посмотреть документы SciPy

Обратите внимание, что подушка (https://python-pillow.org/) не является зависимостью от SciPy, но функции манипуляции с изображениями, указанные в списке ниже, без нее недоступны.

Ответ 8

python -m pip install pillow

Это сработало для меня.

Ответ 9

В случае, если кто-то сталкивается с той же проблемой, пожалуйста, удалите scipy и установите scipy == 1.1.0

$ pip uninstall scipy

$ pip install scipy==1.1.0

Ответ 10

В ответе misc.imread устарела в SciPy 1.0.0 и будет удалена в 1.2.0. imageio - это одна из опций, она возвращает объект типа:

<class 'imageio.core.util.Image'>

но вместо imageio используйте cv2

import cv2
im = cv2.imread('astronaut.png')

im будет иметь тип: <class 'numpy.ndarray'>

Как массивы NumPy быстрее вычислить.

Ответ 11

При выполнении следующего в блокноте Jupyter у меня было похожее сообщение об ошибке:

from skimage import data
photo_data = misc.imread('C:/Users/ers.jpg')
type(photo_data)

сообщение об ошибке

D:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\ipykernel_launcher.py: 3: imread: imread устарела! imread устарела в SciPy 1.0.0 и будет удалена в 1.2.0. Используйте вместо этого imageio.imread. Это отдельно от пакета ipykernel, поэтому мы можем избежать импорта до

И с помощью следующего я получил это решено:

import matplotlib.pyplot
photo_data = matplotlib.pyplot.imread('C:/Users/ers.jpg')
type(photo_data)

Ответ 12

Вам нужна библиотека изображений python ( PIL), но теперь PIL только недостаточно, d лучше установить Подушка. Это хорошо работает.

Ответ 13

У меня есть все пакеты, необходимые для извлечения изображений на ноутбуке jupyter, но даже тогда он показывает ту же ошибку.

Ошибка на ноутбуке Jupyter

Читая комментарии выше, я установил необходимые пакеты. Пожалуйста, скажите, если я пропустил некоторые пакеты.

pip3 freeze | grep -i -E "pillow|scipy|scikit-image"
Pillow==5.4.1
scikit-image==0.14.2

scipy==1.2.1

Ответ 14

Решение, которое работает для меня в Python 3.6 заключается в следующем

py -m pip install Pillow

Ответ 15

У меня была такая же проблема, я попробовал то, что предложил Хосе Карлос Акино. У меня тоже сработало. Надеюсь, поможет.