关于AttributeError: module 'scipy.misc' has no attribute 'imread'的原因咨询
嘿,这个问题我之前踩过坑!咱们来拆解一下这个错误的原因和解决办法:
错误原因:
scipy.misc.imread 已被官方移除 从Scipy 1.0.0版本开始,scipy.misc.imread就被标记为弃用,在后续的新版本(比如1.2.0及之后)直接被彻底从scipy.misc模块中移除了。官方这么做的原因有两个:
- 这个函数本质上是依赖第三方库Pillow来实现的,Scipy团队希望把这类非核心的IO功能剥离出去;
- 图像读取有更专注、更完善的库可以胜任,没必要放在Scipy里占用资源。
替代解决方案
这里给你几个常用的替代方法,选适合你项目的就行:
1. 直接用Pillow读取(最原生的替代)
因为scipy.misc.imread本来就是调用Pillow的接口,直接用Pillow反而更灵活:
from PIL import Image import numpy as np # 读取彩色图并转成numpy数组 im = np.array(Image.open(file_image)) # 如果需要读取灰度图,加上convert参数 im = np.array(Image.open(file_image).convert('L'))
2. 使用imageio库(最简洁的替代)
imageio是专门处理图像/视频IO的轻量库,用法和原来的imread几乎一致:
import imageio # as_gray=True对应你原来代码里的True参数,读取灰度图 im = imageio.imread(file_image, as_gray=True)
3. 用matplotlib的imread(如果已经在用matplotlib)
如果你的项目本来就依赖matplotlib,也可以用它的读取函数:
import matplotlib.pyplot as plt import numpy as np im = plt.imread(file_image) # 如果需要转成灰度图,手动处理一下 if len(im.shape) == 3: im = np.mean(im, axis=2)
内容的提问来源于stack exchange,提问作者user297850
相关产品推荐
相关产品推荐

