解决AttributeError:无需降级scipy的imread, imresize, imsave方法

176 下载量 44 浏览量 更新于2023-03-16 4 收藏 73KB PDF 举报
"无需降级scipy的情况下解决`AttributeError: module ‘scipy.misc’ has no attribute ‘imread’,imresize,imsave`等问题" 在Python编程中,特别是处理图像时,`scipy.misc`模块曾是常用的一个库,包含了一些方便的图像处理函数,如`imread`,`imresize`和`imsave`。然而,在更新的`scipy`版本中,`misc`模块的一些功能被弃用,导致上述提及的错误。这是因为`scipy`团队可能为了保持库的稳定性和遵循更好的编程实践,决定移除这些功能。 当遇到`AttributeError: module 'scipy.misc' has no attribute 'imread'`,`AttributeError: module 'scipy.misc' has no attribute 'imresize'`,以及`AttributeError: module 'scipy.misc' has no attribute 'imsave'`这样的错误时,不要立即考虑降级`scipy`版本。相反,可以寻找替代方案来解决这个问题。 对于`imread`,可以改用`imageio`库来读取图像。`imageio`是一个强大的图像输入/输出库,支持多种格式。例如: ```python import imageio img = imageio.imread(image_path) ``` 对于`imresize`,可以使用`PIL`(Python Imaging Library)或其更新版`Pillow`库中的`Image`模块来实现图像大小调整: ```python from PIL import Image # 加载图像 img = Image.open(image_path) # 调整图像大小 resized_img = img.resize((new_width, new_height)) ``` 如果需要保留与`imresize`类似的行为(比如插值方式),则可以使用`skimage`库的`transform.resize`函数: ```python from skimage import transform # 加载图像 img = imageio.imread(image_path) # 调整图像大小 resized_img = transform.resize(img, (new_width, new_height)) ``` 至于`imsave`,`imageio`同样提供了保存图像的功能: ```python imageio.imwrite(output_path, resized_img) ``` 这样,我们就不需要降级`scipy`,而是利用其他库提供的功能来替换`scipy.misc`中的弃用函数。这不仅可以保持项目依赖的最新状态,还可以利用更专业库提供的更强大和灵活的图像处理功能。记住,当遇到库更新导致的问题时,查找替代方案并更新代码是最佳实践。
2017-08-10 上传
# 工程内容 这个程序是基于tensorflow的tflearn库实现部分RCNN功能。 # 开发环境 windows10 + python3.5 + tensorflow1.2 + tflearn + cv2 + scikit-learn # 数据集 采用17flowers据集, 官网下载:http://www.robots.ox.ac.uk/~vgg/data/flowers/17/ # 程序说明 1、setup.py---初始化路径 2、config.py---配置 3、tools.py---进度条和显示带框图像工具 4、train_alexnet.py---大数据集预训练Alexnet网络,140个epoch左右,bitch_size为64 5、preprocessing_RCNN.py---图像的处理(选择性搜索、数据存取等) 6、selectivesearch.py---选择性搜索源码 7、fine_tune_RCNN.py---小数据集微调Alexnet 8、RCNN_output.py---训练SVM并测试RCNN(测试的时候测试图片选择第7、16类中没有参与训练的,单朵的花效果好,因为训练用的都是单朵的) # 文件说明 1、train_list.txt---预训练数据,数据在17flowers文件夹中 2、fine_tune_list.txt---微调数据2flowers文件夹中 3、1.png---直接用选择性搜索的区域划分 4、2.png---通过RCNN后的区域划分 # 程序问题 1、由于数据集小的原因,在微调时候并没有像论文一样按一个bitch32个正样本,128个负样本输入,感觉正样本过少; 2、还没有懂最后是怎么给区域打分的,所有非极大值抑制集合canny算子没有进行,待续; 3、对选择的区域是直接进行缩放的; 4、由于数据集合论文采用不一样,但是微调和训练SVM时采用的IOU阈值一样,有待调参。