你没有做错任何事情。这是由于自 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
,
imshow
和
toimage
。这些函数中的大多数都具有意外的行为(例如在用户不要求的情况下重新调整大小和类型转换图像数据)。其他函数只是有更好的替代品。
来自
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数组,尽管作为子类(以便可以附加元数据)。