运行
seq = scipy.misc.imresize(seq, self.size, interp='bilinear', mode=None)
出现下面这个
`imresize` is deprecated! `imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.3.0. Use Pillow instead: ``numpy.array(Image.fromarray(arr).resize())``. my_image = scipy.misc.imresize(image, size=(64, 64))
意思是:这段代码中的 imresize
函数已经被弃用(deprecated)了。在 SciPy 1.0.0 版本中,imresize
函数被标记为过时。
过时意味着该函数不再推荐使用,并且在将来的版本中可能会被移除。取而代之的是使用 Pillow 库来替代 imresize
函数。
解决方法:
一、安装旧版本的scipy
pip uninstall xxx -y
(xxx换成需要卸载的包)
安装1.2.1版本的scipy,正确的命令是:pip install scipy==1.2.1
二、使用 Pillow
库中的 resize()
方法
scipy.misc.imresize(image, size, interp=’bilinear’, mode=None)
image是需要调整大小图片对应的矩阵;
size可以有3种取值:
int(返回图像占当前图像大小的百分比),
float(返回图像大小/当前图像大小),
tuple (需返回图像的大小)。
import numpy as np from PIL import Image # 先将图像转换为 PIL 的图像对象 image_pil = Image.fromarray(image) # 计算目标大小 target_size = (int(image.shape[1] * self_size), int(image.shape[0] * self_size)) # 调整图像大小,将调整后的图像转换回 Numpy 数组 resized_image = np.array(image_pil.resize(target_size, resample=Image.BILINEAR))
三、利用OpenCV中的cv2.resize()
方法来进行图像尺寸调整
import cv2 as cv
img = cv.imread('图片所在路径')
# 例如cv.imread("test/1.jpg")
resized_image = cv2.resize(image, target_size, interpolation=cv2.INTER_LINEAR)
resize(InputArray src, OutputArray dst, Size dsize,
double fx=0, double fy=0, int interpolation=INTER_LINEAR )
nputArray src :输入,原图像,即待改变大小的图像;
OutputArray dst: 输出,改变后的图像。这个图像和原图像具有相同的内容,只是大小和原图像不一样而已;
dsize:输出图像的大小,如上面例子(300,300)。
其中,fx和fy就是下面要说的两个参数,是图像width方向和height方向的缩放比例。
fx:width方向的缩放比例
fy:height方向的缩放比例
如果fx=0.3,fy=0.7,则将原图片的x轴缩小为原来的0.3倍,将y轴缩小为原来的0.7倍,
interpolation(插值):这个是指定插值的方式,图像缩放之后,肯定像素要进行重新计算的,就靠这个参数来指定重新计算像素的方式,
上面三种方法均可以解决“scipy.misc is deprecated and has no attribute imresize”,但第二种方法更好。