163

我正在尝试使用 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'
4

18 回答 18

158

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])
于 2017-12-18T09:43:24.443 回答
144

您需要安装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>
于 2013-03-11T18:34:35.940 回答
61

imread 在 1.2.0 版本之后贬值!所以为了解决这个问题,我必须安装 1.1.0 版。

pip install scipy==1.1.0
于 2019-05-24T09:05:20.497 回答
39

对于 Python 3,最好使用imreadin matplotlib.pyplot

from matplotlib.pyplot import imread
于 2018-03-31T10:47:40.243 回答
21

如果有人遇到同样的问题,请卸载 scipy 并安装 scipy==1.1.0

$ pip uninstall scipy

$ pip install scipy==1.1.0
于 2019-06-26T05:08:20.823 回答
9

回答 misc.imread 在 SciPy 1.0.0 中已弃用,并将在 1.2.0 中删除。imageio 是一种选择,它将返回类型的对象:

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

但不是 imageio,而是使用 cv2

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

我将是类型: <class 'numpy.ndarray'>

由于 numpy 数组的计算速度更快。

于 2018-05-20T12:36:36.857 回答
9

您需要 Python 图像库 (PIL),但唉!PIL 项目似乎已被放弃。特别是,它还没有被移植到 Python 3。所以如果你想要 Python 3 中的 PIL 功能,你最好使用Pillow,它是 PIL 的半官方分支,并且似乎正在积极开发。实际上,如果你需要一个现代的 PIL 实现,我会推荐 Pillow。就像pip install pillow. 由于它使用与 PIL 相同的命名空间,因此它本质上是一个替代品。

这个分叉有多“半官方”?你可能会问。Pillow 文档的About页面这样说:

自上次 PIL 发布以来,随着时间的推移,发布新 PIL 的可能性会降低。但是,我们还没有听到官方的“PIL 已死”声明。所以如果你还想支持 PIL,请先在这里报告问题,然后在这里打开相应的 Pillow 票证。

请提供第一个工单的链接,以便我们可以在上游跟踪问题。

然而,PIL官方网站上最新的 PIL 版本是 2009 年 11 月 15 日。我认为,在(截至撰写本文时)近八年没有新版本发布之后,我们可以放心地宣布 Pillow 是 PIL 的继任者。因此,即使您不需要 Python 3 支持,我建议您避开 PyPI 中可用的古老 PIL 1.1.6 发行版,而只需安装新的、最新的、兼容的 Pillow。

于 2017-04-11T00:53:35.203 回答
7

通过以下命令安装 Pillow 库:

pip install pillow

请注意,所选答案已过时。查看 SciPy的文档

请注意,Pillow ( https://python-pillow.org/ ) 不是 SciPy 的依赖项,但没有它,下面列表中指示的图像处理功能将不可用。

于 2017-09-24T14:29:56.737 回答
5

Imread 使用 PIL 库,如果安装了该库,请使用:“from scipy.ndimage import imread”

来源:http ://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.ndimage.imread.html

于 2016-03-24T04:05:08.850 回答
3
python -m pip install pillow

这对我有用。

于 2017-09-17T23:00:40.627 回答
2

在 Jupyter Notebook 中运行以下命令,我收到了类似的错误消息:

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: DeprecationWarning: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)
于 2018-08-31T10:05:36.767 回答
1

我可以像使用 OpenCv一样获取.png我正在使用的文件的唯一方法。uint8

cv2.imread(file)实际上numpy.ndarray返回dtype=uint8

于 2020-09-04T23:11:54.673 回答
1

你需要一个 python 图像库(PIL),但现在只有 PIL 是不够的,你最好安装Pillow。这很好用。

于 2016-08-06T11:35:14.903 回答
1

在 python 3.6 中对我有用的解决方案如下

py -m pip install 枕头

于 2019-05-17T05:09:57.080 回答
1

我有在 jupyter notebook 上提取图像所需的所有软件包,但即便如此,它也显示了同样的错误。

Jupyter 笔记本上的错误

阅读上面的评论,我已经安装了所需的软件包。请告诉我是否错过了一些包裹。

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

scipy==1.2.1
于 2019-03-25T13:23:41.687 回答
0

您必须首先安装与 scipy (<3.7) 兼容的 Python 版本。我无法使用 pip 安装 scipy 1.0 版 [我认为 pip 不再支持此版本] 而是使用了 conda:

conda install -c anaconda scipy==1.0

然后要使用“imread”,您需要安装 Pillow。

pip install pillow
于 2021-08-07T20:24:36.033 回答
0

imread 在 scipy.misc 中已弃用;改用 imageio.imread。

imageio 提供与 Scipy 相同的功能。但请记住,需要更改一些参数(有关详细信息,请查看此处):

  1. 代替mode,使用pilmode关键字参数。
  2. 代替flatten,使用as_gray关键字参数。
于 2021-10-04T18:49:58.497 回答
0

一种方法是像这样使用 PIL:

    from PIL import Image
    input_image = Image.open(filename)
于 2022-01-12T21:18:22.557 回答