scipy.misc.imresize()的替代方法

Art*_*nov 5 numpy scipy python-3.x scikit-image

我想使用一个仍旧使用的旧脚本,该脚本scipy.misc.imresize()不仅已弃用,而且已从scipy中完全删除。相反,开发人员建议使用numpy.array(Image.fromarray(arr).resize())skimage.transform.resize()

不再起作用的确切代码行是这样的:

new_image = scipy.misc.imresize(old_image, 0.99999, interp = 'cubic')
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不确定现在到底能做什么。恐怕如果我开始使用旧的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]
  ...
Run Code Online (Sandbox Code Playgroud)

对此:

[[[57 57 57]
  [59 59 59]
  [58 58 58]
  ...
Run Code Online (Sandbox Code Playgroud)

编辑2

当我使用jhansens方法时,输出为:

[[[ 97  97  97]
  [ 98  98  98]
  [ 98  98  98]
  ...
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么办scipy.misc.imresize

jde*_*esa 13

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

使用skimage ( skimage.transform.resize) 你应该得到相同的:

size = (np.array(old_image.size) * 0.99999).astype(int)
new_image  = skimage.transform.resize(old_image, size, order=3)
Run Code Online (Sandbox Code Playgroud)


小智 6

Scipy 官方文档

imresize 现在已弃用!
imresize 在 SciPy 1.0.0 中已弃用,并将在 1.3.0 中删除。改用枕头:
numpy.array(Image.fromarray(arr).resize())

from PIL import Image
resized_img = Image.fromarray(orj_img).resize(size=(new_h, new_w))
Run Code Online (Sandbox Code Playgroud)

  • 添加一下,这个“resize”模块将为我们提供“PIL.Image.Image”对象。要获取 numpy 数组,`resized_img = np.array(resized_img)` (4认同)