from scipy.misc import imread 报错之解决

博客内容讲述了在创建词云图时,由于scipy库的新版本移除了imread()函数,导致无法直接使用。解决方法是转向使用imageio库来读取图片数据。imageio是一个简化图像数据读写的库,能够方便地处理各种图像数据,包括动画和科学格式。通过将代码中的`from scipy.misc import imread`替换为`from imageio import imread`,可以顺利地实现mask参数的设置,从而完成词云的异形展示。

        制作词云的时候,我们会利用 mask 参数来实现异形展示,需调用  imread()  函数来处理有关图片,既往多通过安装 scipy 库来实现:

from scipy.misc import imread
mask=imread('mask.png') 
 
<f>=wordcloud.WordCloud(...mask=mask...)

        Scipy 库为 Python 高级科学计算库,和 Numpy 库联系密切,多通过操控 Numpy 数组来进行科学计算、统计分析。Scipy 有很多子模块,可以应对不同的应用,misc 是其中的杂项模块,包括图像 io 相关的操作,如 imread()。

        但目前 scipy 新版本已将 imread() 等函数剔除,因此再以此库来调用该函数会报错:

        解决办法是换用 imageio 库。

        imageio 库提供了简单的接口来读取和写入大量的图像数据,包括动画图像、体积数据和科学格式等,为极简化的图像数据读写库。

        文首代码改为以下即可。

from imageio import imread
mask=imread('mask.png') 
 
<f>=wordcloud.WordCloud(...mask=mask...)
### `scipy.misc.imread` 和 `scipy.misc.imresize` 的使用方式及替代方案 在早期版本的 SciPy 中,`scipy.misc.imread` 和 `scipy.misc.imresize` 是用于图像读取和缩放的重要函数。然而,从 SciPy 1.0.0 版本开始,这两个函数已被弃用,并计划在 1.2.0 版本中完全移除[^3]。 #### `imread` 的使用与替代方案 `scipy.misc.imread` 用于将图像文件读取为 NumPy 数组,支持多种图像格式,例如 PNG、JPEG 等。其基本使用方式如下: ```python from scipy.misc import imread image = imread('example.jpg') ``` 由于该函数已被弃用,推荐使用 `imageio` 或 `Pillow`(即 `PIL` 的现代版本)替代: ```python import imageio image = imageio.imread('example.jpg') # 或使用 Pillow from PIL import Image import numpy as np image = np.array(Image.open('example.jpg')) ``` #### `imresize` 的使用与替代方案 `scipy.misc.imresize` 用于调整图像尺寸,支持多种插值方式,例如 `'nearest'`、`'bilinear'`、`'bicubic'` 等。其典型用法如下: ```python from scipy.misc import imresize resized_image = imresize(image, (128, 128), interp='bilinear') ``` 该函数也已被弃用,推荐使用 `Pillow` 或手动实现缩放功能。以下是一个兼容的替代实现: ```python import numpy as np from PIL import Image def imresize(arr, size, interp='bilinear'): im = Image.fromarray(arr) if isinstance(size, float): size = tuple((np.array(im.size) * size).astype(int)) elif isinstance(size, int): size = tuple((np.array(im.size) * size / 100.0).astype(int)) else: size = (size[1], size[0]) # PIL 使用 (width, height) resample = { 'nearest': Image.NEAREST, 'lanczos': Image.LANCZOS, 'bilinear': Image.BILINEAR, 'bicubic': Image.BICUBIC }[interp] im_resized = im.resize(size, resample=resample) return np.array(im_resized) # 使用示例 resized_image = imresize(image, (128, 128), interp='bicubic') ``` #### 兼容性与版本控制 若需继续使用 `imread` 和 `imresize`,可选择降级 SciPy 版本,例如安装 1.0.0 以下版本: ```bash pip install scipy==1.0.0 ``` 但需注意,Python 3.9 及以上版本可能无法兼容旧版 SciPy,因此建议优先使用替代库或自定义实现[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香饽々

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值