Scipy无法导入imresize报错求助:更换Pillow仍未解决
解决Scipy中
imresize导入报错的问题 问题根源
Scipy的imresize函数在新版本中已被移除,因此直接从scipy导入会触发ImportError。
可行替代方案
方案1:使用OpenCV的cv2.resize(推荐,无需额外安装)
你已经导入了cv2,直接替换原有代码即可。注意cv2.resize的尺寸参数顺序是**(宽度, 高度)**,和原imresize的(高度, 宽度)相反:
# 删除这行:from scipy import imresize # 修改resize调用部分 gray_image = cv2.resize(gray_image, (120, 100))
方案2:使用scikit-image的resize
先安装依赖:
pip install scikit-image
然后修改代码:
# 导入resize from skimage.transform import resize # 修改resize调用,preserve_range=True保证数值范围不变,避免影响模型预测 gray_image = resize(gray_image, (100, 120), preserve_range=True) # 转换为整数类型(匹配原灰度图格式) gray_image = gray_image.astype(np.uint8)
方案3:使用Pillow的Image.resize
修正你之前的错误用法,需要将numpy数组与Pillow图像对象互相转换:
# 导入Image from PIL import Image # 修改resize调用部分 gray_image = Image.fromarray(gray_image) # Pillow的resize参数也是(宽度, 高度) gray_image = gray_image.resize((120, 100)) gray_image = np.array(gray_image)
修改后的完整代码(以方案1为例)
import cv2 import imutils import numpy as np from sklearn.metrics import pairwise from keras.models import load_model import PIL def getPredictedClass(model): image = cv2.imread('Temp.png') gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 改用cv2.resize,尺寸顺序为(宽度, 高度) gray_image = cv2.resize(gray_image, (120, 100)) gray_image = gray_image.reshape(1, 100, 120, 1) prediction = model.predict_on_batch(gray_image) predicted_class = np.argmax(prediction)
内容的提问来源于stack exchange,提问作者Sana Naz
相关产品推荐
相关产品推荐

