解决AttributeError: module ‘scipy.ndimage‘ has no attribute ‘imread‘

本文针对吴恩达深度学习课程中出现的scipy模块imread属性错误,提供了一种解决方案,包括安装Pillow和matplotlib库,以及修改代码以使用matplotlib.pyplot.imread替代scipy的imread方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在吴恩达的deeplearning的01-Week4 的作业中,最后的:
7) Test with your own image (optional/ungraded exercise)
出现:AttributeError: module ‘scipy.ndimage‘ has no attribute ‘imread‘

电脑中无法修改scipy的版本时,采用了以下的方法。

解决步骤:

1. 安装pillow

pip install Pillow
pip install matplotlib

2. 修改代码

添加:

import matplotlib

修改:

## START CODE HERE ##
import matplotlib
my_image = "dog.jpg" # change this to the name of your image file 
my_label_y = [1] # the true class of your image (1 -> cat, 0 -> non-cat)
## END CODE HERE ##

fname = "images/" + my_image
image = np.array(matplotlib.pyplot.imread(fname))
my_image = np.array(Image.fromarray(image).resize(size=(num_px,num_px))).reshape((1, num_px*num_px*3)).T
# image = np.array(ndimage.imread(fname, flatten=False))
# my_image = scipy.misc.imresize(image, size=(num_px,num_px)).reshape((num_px*num_px*3,1))
my_predicted_image = predict(my_image, my_label_y, parameters)

plt.imshow(image)
print ("y = " + str(np.squeeze(my_predicted_image)) + ", your L-layer model predicts a \"" + classes[int(np.squeeze(my_predicted_image)),].decode("utf-8") +  "\" picture.")

特别感谢

  1. https://blog.youkuaiyun.com/weixin_47360674/article/details/107265396
### 错误分析 遇到`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不提供期望功能的情况下,转向第三方扩展库是一种有效的解决方案。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值