scipy.misc图像函数(如imread,imresize,imsave,imshow等)出现AttributeError或ImportError错误。

3

当我尝试导入或直接使用scipy.misc模块中包含的任何图像函数时,我遇到了两种错误。以下是使用imread()函数的两个错误示例:

>>> from scipy.misc import imread

ImportError: cannot import name 'imread' from 'scipy.misc'

并且

>>> import scipy.misc                                                                                                                                                                
>>> scipy.misc.imread

AttributeError: module 'scipy.misc' has no attribute 'imread'

我做错了什么?

1个回答

8
你没有做错任何事情。这是由于自 SciPy 版本 1.2.0 起,scipy.misc 模块的图像函数已被移除。我不知道为什么他们认为这些函数已被弃用并将它们删除了,但如果你想使用它们,可以通过卸载当前版本并安装旧版本来回滚到以前的 SciPy 版本:
pip uninstall scipy
pip install scipy==1.1.0

请确保您已经安装了Pillow

pip install Pillow

如果您不想使用旧版本的SciPy,则需要更改代码。根据每个弃用函数的官方文档,以下是SciPy建议的操作:

  • fromimage(im) -> np.asarray(im)
  • imfilter() -> 直接使用Pillow滤波功能。
  • imread() -> imageio.imread()
  • imsave() -> imageio.imwrite()
  • imresize() -> numpy.array(Image.fromarray(arr).resize())
  • imrotate -> skimage.transform.rotate()
  • imshow() -> matplotlib.pyplot.imshow()
  • toimage() -> Image.fromarray()

假设需要安装以下库:

pip install numpy Pillow scikit-image imageio matplotlib

并导入它们:

import numpy as np, Pillow, skimage, imageio, matplotlib

此外,我引用了两个来源,提到了scipy.misc图像I/O功能的弃用:
来自scipy.github.io
以下函数在scipy.misc中已被弃用: bytescale, fromimage, imfilter, imread, imresize, imrotate, imsave, imshowtoimage。这些函数中的大多数都具有意外的行为(例如在用户不要求的情况下重新调整大小和类型转换图像数据)。其他函数只是有更好的替代品。
来自imageio.readthedocs.io(特别针对imread):
从Scipy的imread过渡
Scipy正在废弃其图像I/O功能。
本文档旨在帮助从Scipy过渡到Imageio的人们适应Imageio的imread函数。我们建议阅读用户API并查看一些示例,以了解Imageio的感觉。
Imageio利用各种插件来支持从许多不同格式读取图像(和体积/电影)。幸运的是,Pillow是常见图像的主要插件,这是与Scipy的imread使用相同的库。请注意,Imageio根据要读取的图像自动选择插件(除非显式指定格式),但在可能的情况下使用Pillow。
简而言之:对于以前由Scipy的imread读取的图像,Imageio通常也应该使用Pillow,并且在这些情况下Imageio提供与Scipy相同的功能。但请记住:
- 使用pilmode关键字参数代替mode。 - 使用as_gray关键字参数代替flatten。 - 上述参数的文档不在imread上,而在各个格式的文档中,例如PNG。 - Imageio的所有函数都返回numpy数组,尽管作为子类(以便可以附加元数据)。

或者更好的方法是,直接使用Pillow和/或scikit-image进行替换。 - ev-br

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