我们在使用scipy的时候有时候还需要依赖一些其他的第三方包。比如在SciPy使用misc功能时候,有些小伙伴会遇到SciPy找不到imsave的情况,这种情况就是缺少第三方包的情况,接下来看小编是如何解决的吧。
案例分析
在想把CIFAR-10 的16进制数据转为图像的时候需要用到imsave(),但是在import scipy.misc 之后显示该库内没有imsave()
后来发现还需要安装 Pillow这个包
解决:
pip install Pillow
原因分析:
在安装Pillow之前,通过dir(scipy.misc) 可以查看里面的包,然后发现找不到imsave()函数
安装Pillow之后,再次查看就能发现多了很多函数,其中包括imsave(), imread()
Pillow是python的一个十分强大的图像处理库,imsave之类的图像处理函数应该是属于Pillow库的
导入的时候需要输入 import PIL,但是此时调用imsave是找不到的
这种安装包还会在其他库内导入新的函数的行为是第一次发现。
补充:解决module scipy.misc has no attribute imsave报错办法
当我们想要打开scipy.misc.imsave()包中的图像,出现了这样的报错怎么做
from scipy import misc
import matplotlib.pyplot as plt
f = misc.face()
misc.imsave('face.png', f) # uses the Image module (PIL)
plt.imshow(f)
plt.show()
Traceback (most recent call last):
File "D:/pycharm/pycharm_project/Numpy Matplotlib scipy/scipy图像处理.py", line 4, in <module>
misc.imsave('face.png', f) # uses the Image module (PIL)
AttributeError: module 'scipy.misc' has no attribute 'imsave'
处理方法:
这里需要用到另外一种打开方法:
import imageio
imageio.imsave()
# 例
from scipy import misc
import imageio
import matplotlib.pyplot as plt
f = misc.face()
imageio.imsave('face.png', f)
plt.imshow(f)
plt.show()
输出
以上就是scipy找不到imsave的解决方案,希望能给大家一个参考,也希望大家多多支持W3Cschool。