解决“ImportError: cannot import name 'imresize'”

1. 问题描述

如题,Python代码报错,其完整错误信息如下:

from scipy.misc import imresize
ImportError: cannot import name 'imresize'

在某些情形下,可以通过安装Pillow(命令:pip install pillow)来解决,然而自己的环境中已经安装了Pillow却还是报上述错误,那么应该是别的原因引起的。



2. 原因分析

通过查找资料得知,imresize已经被最新版本的SciPy库所弃用,而自己报错的Python环境的SciPy库版本为1.3.0,这也正是出现上述问题的原因。

imresize is deprecated! imresize is deprecated in SciPy 1.0.0, and will be removed in 1.3.0.


---- from https://docs.scipy.org/doc/scipy-1.2.0/reference/generated/scipy.misc.imresize.html



3. 解决方法

换一种写法,通过numpy来实现,import语句如下所示(当然,仍然需要依赖Pillow库,可以用语句pip install pillow进行安装):

from PIL import Image
import numpy as np

imresize使用示例(被注释的第一行是基于scipy库的写法,第二行是基于numpy的写法):

# im = imresize(im, (h, int(w * aspect_ratio)), interp='bicubic')
im = np.array(Image.fromarray(im).resize((h, int(w * aspect_ratio))))


参考资料:

  • https://docs.scipy.org/doc/scipy-1.2.0/reference/generated/scipy.misc.imresize.html
  • https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/issues/652

你可能感兴趣的:(数字图像处理,Python,Debug)