【问题标题】:how to fix "cannot import name 'imresize' error while this function importing from scipy.misc?从 scipy.misc 导入此函数时,如何解决“无法导入名称‘imresize’错误?
【发布时间】:2019-10-09 04:31:38
【问题描述】:

我正在使用 google colab 运行 python 代码并尝试缩小图像。

from keras.layers import Lambda
import tensorflow as tf
from skimage import data, io, filters
import numpy as np
from numpy import array
from numpy.random import randint
from scipy.misc import imresize
import os
import sys

import matplotlib.pyplot as plt
plt.switch_backend('agg')


# Takes list of images and provide LR images in form of numpy array
def lr_images(images_real , downscale):

    images = []
    for img in  range(len(images_real)):
        images.append(imresize(images_real[img],[images_real[img].shape[0]//downscale,images_real[img].shape[1]//downscale], interp='bicubic', mode=None))
    images_lr = array(images)
    return images_lr

它应该缩小图像但显示此错误。

from scipy.misc import imresize ImportError: cannot import name '调整大小'

【问题讨论】:

  • imresize 已从 scipy 1.3 版中删除,因为它是其他地方可用功能的副本 - 特别是 Pillow 模块。

标签: python scipy image-resizing


【解决方案1】:

通过以下方式安装 scipy 1.1.0:

pip install scipy==1.1.0

【讨论】:

    【解决方案2】:

    它已被弃用。 改用 cv2 调整大小功能

    import cv2
    size = (80,80)
    cv2.resize(img, size)
    

    【讨论】:

      【解决方案3】:

      您可以按照 cmets 中的建议使用枕头。您的代码的更改如下所述:

      import PIL
      
      images.append(np.array(PIL.Image.fromarray(images_real[img]).resize( 
            [images_real[img].shape[0]//downscale, 
          images_real[img].shape[1]//downscale],resample=PIL.Image.BICUBIC)))
      

      如果您的图像表示为浮点数,您将收到一条错误消息“无法处理此数据类型”。在这种情况下,您需要将图像转换为 uint 格式,如下所示:

      images.append(np.array(PIL.Image.fromarray( 
          (images_real[img]*255).astype(np.uint8)).resize( 
          [images_real[img].shape[0]//downscale, 
          images_real[img].shape[1]//downscale],resample=PIL.Image.BICUBIC)))
      

      【讨论】:

        【解决方案4】:

        这项工作适合我... 在导入中我改变了这个:

        from scipy.misc import imresize
        

        为此:

        from skimage.transform import resize
        

        以及我更改的实现示例:

        这个:

        img = imresize(img, (150, 150, 3)).astype('float32')/255.
        

        为此:

        img = resize(img, (150, 150, 3)).astype('float32')/255.
        

        我希望这对你也有帮助......

        【讨论】:

          【解决方案5】:

          你可以试试这个:

          skimage.transform.resize

          https://scikit-image.org/docs/stable/auto_examples/transform/plot_rescale.html

          首先,导入resize:

          from skimage.transform import resize

          然后传入图像、x/y 大小值(本例中为原始值的一半)并将抗锯齿设置为 true 以防止出现锯齿伪影:

          image_resized = resize(image, (image.shape[0] // 2, image.shape[1] // 2), anti_aliasing=True)

          【讨论】:

          • 你能举个例子吗?
          【解决方案6】:

          imresize1.3.0 之后不可用。

          您可以使用Image.resize from PIL

          安装枕头:

          pip install Pillow
          

          然后导入

          from PIL import Image.resize as imresize
          

          【讨论】:

            【解决方案7】:

            我遇到了类似的问题,这样解决:

            import scpy
            

            并且使用了函数,因为它是 scipy.misc.imresize(args) 保罗

            【讨论】:

            • scipy版本没有imresize功能是不行的
            猜你喜欢
            • 2023-01-22
            • 2019-10-05
            • 2022-06-17
            • 2022-06-30
            • 1970-01-01
            • 2018-09-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多