python-3.x - scipy.misc.imresize() 的替代方案
问题描述
我想使用一个仍然使用的旧脚本,它scipy.misc.imresize()
不仅被弃用,而且完全从 scipy 中删除。相反,开发人员建议使用numpy.array(Image.fromarray(arr).resize())
或skimage.transform.resize()
。
不再工作的确切代码行是:
new_image = scipy.misc.imresize(old_image, 0.99999, interp = 'cubic')
不幸的是,我不再完全确定它到底做了什么。恐怕如果我开始使用旧的 scipy 版本,我的新脚本将停止工作。我一直将它用作模糊滤镜的一部分。如何进行numpy.array(Image.fromarray(arr).resize())
或skimage.transform.resize()
执行与上述代码行相同的操作?抱歉,我提供的信息不足。
编辑
我已经能够确定这条线的作用。它从此转换图像数组:
[[[0.38332759 0.38332759 0.38332759]
[0.38770704 0.38770704 0.38770704]
[0.38491378 0.38491378 0.38491378]
...
对此:
[[[57 57 57]
[59 59 59]
[58 58 58]
...
编辑2
当我使用 jhansens 方法时,输出是这样的:
[[[ 97 97 97]
[ 98 98 98]
[ 98 98 98]
...
我不明白做什么scipy.misc.imresize
。
解决方案
您可以查找已弃用函数的文档和源代码。简而言之,使用Pillow ( Image.resize
) 您可以:
im = Image.fromarray(old_image)
size = tuple((np.array(im.size) * 0.99999).astype(int))
new_image = np.array(im.resize(size, PIL.Image.BICUBIC))
使用skimage ( skimage.transform.resize
) 你应该得到相同的结果:
size = (np.array(old_image.size) * 0.99999).astype(int)
new_image = skimage.transform.resize(old_image, size, order=3)
推荐阅读
- apache-spark - 将 sql-spark-connector 库安装到 Azure Synapse Apache Spark
- c# - 如何获取 csv 字符串格式的子表项的计数
- arrays - 单个元素的低阶 Spark Dataframe Array 连接
- c# - 我想使用 LINQ 获得最常见的值
- xslt - 在 XSL 中的两个日期之间计算
- latex - Biblatex 再次显示同一作者而不是“-”
- r - 将不同大小的命名向量合并到数据框中
- ansible - 无法访问 jinja 中的字典值
- python - 输入/输出到/从控制台
- javascript - 使用 match 将路由器 dom 与 Typescript 反应