web-dev-qa-db-fra.com

le module scipy.misc n'a pas d'attribut imread?

J'essaie de lire une image avec Scipy. Cependant, il n'accepte pas la partie scipy.misc.imread. Quelle pourrait en être la cause?

>>> import scipy
>>> scipy.misc
<module 'scipy.misc' from 'C:\Python27\lib\site-packages\scipy\misc\__init__.pyc'>
>>> scipy.misc.imread('test.tif')
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    scipy.misc.imread('test.tif')
AttributeError: 'module' object has no attribute 'imread'
57
ustroetz

Vous devez installer Pillow (anciennement PIL ). De les docs on scipy.misc

Notez que Pillow n’est pas une dépendance de SciPy mais que les fonctions de manipulation d’images indiquées dans la liste ci-dessous ne sont pas disponibles sans cela:

... 

imread

...

Après avoir installé Pillow, j’ai pu accéder à imread comme suit:

In [1]: import scipy.misc

In [2]: scipy.misc.imread
Out[2]: <function scipy.misc.pilutil.imread>
109
Wilduck

imread est obsolète dans SciPy 1.0.0 et sera supprimé dans 1.2.0 . Utilisez imageio.imread à la place.

import imageio
im = imageio.imread('astronaut.png')
im.shape  # im is a numpy array
(512, 512, 3)
imageio.imwrite('imageio:astronaut-gray.jpg', im[:, :, 0])
17
Shadab

imread est amorti après la version 1.2.0! Donc, pour résoudre ce problème, j'ai dû installer la version 1.1.0.

pip install scipy==1.1.0
14
mahbubcseju

Vous avez besoin de la PIL (Python Imaging Library), mais hélas! le projet PIL semble avoir été abandonné. En particulier, il n'a pas été porté en Python 3. Donc, si vous voulez la fonctionnalité PIL dans Python 3, vous ferez bien d'utiliser Pillow , qui est le fork semi-officiel de PIL et qui semble être activement développé. En fait, si vous avez besoin d'une mise en œuvre moderne de la notice d'information personnelle, je vous recommanderais Pillow. C'est aussi simple que pip install pillow. Comme il utilise le même espace de noms que PIL, il s'agit essentiellement d'un remplacement instantané.

A quel point cette fourche est-elle "semi-officielle"? tu peux demander. La À propos page de la documentation Pillow dit ceci:

Au fur et à mesure que plus de temps s'écoule depuis la dernière publication de la PIL, la probabilité d'un nouvelle version de la PIL diminue. Cependant, nous n’avons pas encore entendu un “Pil. est mort "annonce. Donc, si vous voulez toujours soutenir PIL, s'il vous plaît signalez les problèmes ici d'abord, puis ouvrez les billets correspondants pour Pillow.

Veuillez fournir un lien vers le premier ticket afin que nous puissions suivre le (s) problème (s) en amont.

Cependant, la dernière publication de PIL sur le site officiel de PIL est datée du 15 novembre 2009. Je pense que nous pouvons sans risque proclamer que Pillow est le successeur de PIL après (au moment de la rédaction de cet article) près de huit ans d'absence. Ainsi, même si vous n’avez pas besoin de la prise en charge de Python 3, je vous suggère d’éviter l’ancienne distribution PIL 1.1.6 disponible dans PyPI et d’installer simplement un oreiller compatible, frais et à jour.

8
Josh Hansen

Si vous rencontrez le même problème, veuillez désinstaller scipy et installer scipy == 1.1.0.

$ pip uninstall scipy

$ pip install scipy==1.1.0
5
SuperNova

Installez la bibliothèque Pillow en utilisant les commandes suivantes:

pip install pillow

Remarque, la réponse sélectionnée a été obsolète. Voir la documentation de SciPy

Notez que Pillow ( https://python-pillow.org/ ) n'est pas une dépendance de SciPy, mais les fonctions de manipulation d'images indiquées dans la liste ci-dessous ne sont pas disponibles sans lui.

4
Steve

Pour Python 3, il est préférable d’utiliser imread dans matplotlib.pyplot:

from matplotlib.pyplot import imread
4
MasterJedi

Imread utilise la bibliothèque PIL, si celle-ci est installée, utilisez: "From scipy.ndimage import imread"

Source: http://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.ndimage.imread.html

3
Dhananjay Mehta
python -m pip install pillow

Cela a fonctionné pour moi.

2
José Carlos Aquino

Comme la réponse, misc.imread est obsolète dans SciPy 1.0.0 et sera supprimée dans 1.2.0 . Imageio est une option, elle retournera un objet de type:

<class 'imageio.core.util.Image'>

mais au lieu de imageio, utilisez cv2

import cv2
im = cv2.imread('astronaut.png')

im sera de type: <class 'numpy.ndarray'>

Comme les tableaux numpy sont plus rapides à calculer.

1
kshitij_p

La solution qui fonctionne pour moi dans python 3.6 est la suivante

py -m pip installer un oreiller

0

J'ai tous les paquets requis pour l'extraction d'image sur le cahier jupyter, mais même dans ce cas, cela me montre la même erreur.

Erreur sur le carnet Jupyter

En lisant les commentaires ci-dessus, j'ai installé les packages requis. S'il vous plaît dites-moi si j'ai manqué certains paquets.

pip3 freeze | grep -i -E "pillow|scipy|scikit-image"
Pillow==5.4.1
scikit-image==0.14.2

scipy==1.2.1
0
Raj

Vous avez besoin d'une bibliothèque d'images Python ( PIL ), mais maintenant, PIL ne suffit plus, vous feriez mieux d'installer Pillow . Ça marche bien.

0
K.A.Pendragon

En exécutant ce qui suit dans un cahier Jupyter, un message d'erreur similaire s'est affiché:

from skimage import data
photo_data = misc.imread('C:/Users/ers.jpg')
type(photo_data)

"erreur" msg:

D:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\ipykernel_launcher.py: 3: DeprecationWarning: imread est obsolète! imread est obsolète dans SciPy 1.0.0, et sera supprimé dans 1.2.0. Utilisez imageio.imread au lieu. Ceci est séparé du paquet ipykernel afin que nous puissions éviter faire des importations jusqu'à

Et en utilisant ce qui suit je l'ai résolu:

import matplotlib.pyplot
photo_data = matplotlib.pyplot.imread('C:/Users/ers.jpg')
type(photo_data)
0
Mike