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'
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>
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])
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
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.
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
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.
Pour Python 3, il est préférable d’utiliser imread
dans matplotlib.pyplot
:
from matplotlib.pyplot import imread
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
python -m pip install pillow
Cela a fonctionné pour moi.
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.
La solution qui fonctionne pour moi dans python 3.6 est la suivante
py -m pip installer un oreiller
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.
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
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. Utilisezimageio.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)