scipy.misc模块没有imread属性?

180

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

你使用的是哪个版本的scipy?对我来说,scipy.__version__显示为0.9.0,我无法重现你的问题。 - hannes
我可以在Scipy版本0.10.1上重现这个问题。 - Wilduck
4
我认为这个函数依赖于安装了PIL(http://www.pythonware.com/products/pil/)。你有安装PIL吗? - Wilduck
12
imread在SciPy 1.0.0中已被弃用,并在1.2.0中移除。 请改用imageio.imread - Manas
@Manas Bhardwaj,imageioscipy.misc的替代品吗?因为在scipy.misc中有imresize功能,但在imageio中没有。有人能帮我解决这个问题吗?谢谢。 - saichand
显示剩余6条评论
18个回答

1
在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)

这与问题无关。这是一个不同的问题和答案。 - Halis Yılboğa

1

对于我在Python 3.6中的解决方案是以下内容:

py -m pip install Pillow


1
你需要一个Python图像库(PIL),但现在仅有PIL已经不够了,最好安装Pillow。这样做效果更好。

2
已经有一条评论在被接受的答案中指出应该使用 pillow 而不是 PIL。我认为将其作为一个答案添加并不是一个坏主意,但如果您能解释一下原因,那将会更加有用。谢谢。 - lrnzcig

1
唯一的方法是使用OpenCv将我正在处理的.png文件作为uint8导入。
cv2.imread(file)实际上返回了dtype = uint8的numpy.ndarray。

1
我已经拥有在jupyter笔记本上进行图像提取所需的所有软件包,但即使如此,它仍然显示相同的错误。 Jupyter Notebook上的错误 阅读以上评论后,我已安装了所需的软件包。如果我错过了一些软件包,请告诉我。
pip3 freeze | grep -i -E "pillow|scipy|scikit-image"
Pillow==5.4.1
scikit-image==0.14.2

scipy==1.2.1

0

在scipy.misc中,imread已被弃用,请使用imageio.imread代替。

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

  1. 使用pilmode关键字参数代替mode
  2. 使用as_gray关键字参数代替flatten

0

您必须先安装与scipy (<3.7)兼容的Python版本。 我无法使用pip安装scipy 1.0版本[我认为此版本在pip上不再受支持],因此改用conda:

conda install -c anaconda scipy==1.0

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

pip install pillow

0
一种方法是使用PIL,像这样:
    from PIL import Image
    input_image = Image.open(filename)

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