替代 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 是做什么的。

原文由 Artur Müller Romanov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 826
1 个回答

您可以查找已弃用函数的 文档源代码。简而言之,使用 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)

原文由 jdehesa 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进