web-dev-qa-db-fra.com

Comment corriger "Impossible d'importer le nom" IMResize 'Erreur lors de l'importation de cette fonction à partir d'Egny.misc?

J'utilise Google Colab pour exécuter python code et essayer d'abattre des images.

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

Il devrait réduire les images, mais montrer cette erreur.

de Scipire.Misc Import IMResize ImporterRor: Impossible d'importer le nom 'imresize'

7
star123

Vous pouvez essayer celui-ci:

skimage.transform.resize

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

1
Du Bai Xu

Vous pouvez utiliser un oreiller comme suggéré dans les commentaires. Les modifications de votre code seraient comme mentionnées ci-dessous:

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)))

Si votre image est représentée comme un flotteur, vous obtiendrez une erreur disant "Impossible de gérer ce type de données". Dans ce cas, vous devez convertir l'image au format UINT comme celui-ci:

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)))
1
Prashant

installez Scipy 1.1.0 par:

pip install scipy==1.1.0
0
Aravinda_gn