module 'scipy.ndimage' has no attribute 'imread'

问题

#导入ndimage
from scipy import ndimage
#调用imread
fname = "images/" + my_image
image = np.array(ndimage.imread(fname))

报错:

module ‘scipy.ndimage’ has no attribute ‘imread’

环境

  1. Python版本:3.7.4
  2. scipy版本:1.2.1
  3. PIL版本:6.0.0

解决方案

方案一:

  1. 打开Cmd,安装imageio
pip3 install imageio
  1. 调用imageio.imread
import imageio
fname = "images/" + my_image
image = np.array(imageio.imread(fname))

方案二:

from matplotlib.pyplot import imread

参考

[1]scipy.misc module has no attribute imread?

### 错误分析 遇到`AttributeError: module 'scipy.ndimage' has no attribute 'binary'`表明尝试访问的属性或方法并不存在于当前版本的 `scipy.ndimage` 模块中[^1]。这可能是由于API变更或是误解了该库的功能所致。 ### 解决方案 对于此类问题,有几种可能的方法来解决: #### 方法一:确认文档与版本兼容性 确保所使用的Scipy版本支持所需功能,并查阅对应版本的官方文档以获取确切的信息。不同版本间可能存在差异,某些函数或特性可能会被移除或者重命名[^2]。 #### 方法二:更新至最新稳定版SciPy 如果正在使用较旧版本的SciPy,则建议升级到最新的稳定发布版本,因为开发者通常会在新版本中修复已知的问题以及改进现有接口。可以利用pip工具轻松完成此操作: ```bash pip install --upgrade scipy ``` #### 方法三:寻找替代实现方式 假如确实发现`scipy.ndimage.binary_*`系列的操作不再可用,那么可以根据具体需求考虑其他途径达成目的。例如,在处理二值图像形态学运算时,可转而采用OpenCV库中的相应函数;又或者是探索`scikit-image`这个专注于图像处理的科学计算包所提供的相似功能[^3]。 #### 示例代码片段展示如何通过skimage执行基本的二值化操作 ```python from skimage import io, filters, morphology # 加载灰度图作为示例输入 image = io.imread('example.png', as_gray=True) # 应用阈值法得到二值图像 threshold_value = filters.threshold_otsu(image) binary_image = image > threshold_value # 执行开闭运算去除噪声点 cleaned_binary_image = morphology.opening(binary_image, selem=morphology.disk(1)) ``` 上述例子展示了当原生SciPy不提供期望功能的情况下,转向第三方扩展库是一种有效的解决方案。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值