40

Ich versuche ein Bild mit scipy zu lesen. Es akzeptiert jedoch nicht den scipy.misc.imread Teil. Was könnte die Ursache dafür sein?scipy.misc Modul hat kein Attribut imread?

>>> 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' 
+0

Welche Version von scipy verwenden Sie? 'scipy .__ version__' gibt '0.9.0' für mich und ich kann Ihr Problem nicht reproduzieren – hannes

+0

erhalten Sie den gleichen Fehler, wenn Sie tun 'von scipy.misc importlesen, und dann' imread (' test.tif ') ' ? – karthikr

+0

@karthikr Ja, ich bekomme den gleichen Fehler dafür. – ustroetz

Antwort

77

Sie benötigen Pillow (früher PIL) zu installieren. Von the docs auf scipy.misc:

Beachten Sie, dass Kissen nicht eine Abhängigkeit von SciPy ist aber die Bildbearbeitungsfunktionen in der Liste unten angegeben sind nicht verfügbar, ohne es:

...

imread

Nach der Installation von Kissen, war ich abl e imread zuzugreifen, wie folgt:

In [1]: import scipy.misc 

In [2]: scipy.misc.imread 
Out[2]: <function scipy.misc.pilutil.imread> 
+0

Orz, aber wenn ich PIL installiere, dann gibt es mir '

+18

Es sollte Kissen statt PIL jetzt sein. Referenz: https://pillow.readthedocs.org/ –

+0

Sie haben meinen Tag gerettet - aber warum scipy Dokumentation ist so arm! Meine Schritte sind install numpy + MKL> Pillow> Scipy alle sind von der Universität von Kalifornien in Irvine kompilierten Python-Module für Windows heruntergeladen. – SIslam

0

Sie benötigen eine Python Bildbibliothek (PIL), aber jetzt ist PIL nur nicht genug, Sie sollten besser Pillow installieren. Das funktioniert gut.

+1

Es gibt einen Kommentar zu der angenommenen Antwort, die bereits besagt, dass 'pillow' anstelle von' PIL' verwendet werden sollte. Ich denke nicht, dass es eine schlechte Idee ist, es als Antwort hinzuzufügen, aber es wäre viel nützlicher, wenn Sie erklären würden, warum. Vielen Dank. – lrnzcig

6

Sie benötigen die Python Imaging Library (PIL), aber leider! Das PIL-Projekt scheint aufgegeben worden zu sein. Insbesondere wurde es nicht nach Python 3 portiert. Wenn Sie also die PIL-Funktionalität in Python 3 haben wollen, sollten Sie Pillow verwenden, was die halboffizielle Verzweigung von PIL ist und anscheinend aktiv entwickelt wird. Eigentlich, wenn Sie eine moderne PIL-Implementierung benötigen, würde ich Pillow empfehlen. Es ist so einfach wie pip install pillow. Da es den gleichen Namespace wie PIL verwendet, ist es im Wesentlichen ein Drop-In-Ersatz.

Wie "halb-offiziell" ist diese Gabel? können Sie fragen. Die About Seite des Kissen docs sagt, dass dies:

Je mehr Zeit seit dem letzten PIL Release geht, die Wahrscheinlichkeit einer neuen PIL Freisetzung abnimmt. Allerdings haben wir noch eine offizielle "PIL ist tot" Ankündigung zu hören. Also, wenn Sie immer noch PIL unterstützen möchten, bitte zuerst Probleme melden, dann öffnen Sie entsprechende Pillow Tickets hier.

Bitte geben Sie einen Link zum ersten Ticket an, damit wir das Problem verfolgen können. upstream.

jedoch die jüngste PIL Veröffentlichung auf den official PIL site wird am 15. November datiert 2009. Ich denke, wir können sicher Kissen verkünden als Nachfolger von PIL nach (zum Zeitpunkt des Schreibens) fast acht Jahre keine neuen Versionen. Auch wenn Sie keine Python 3-Unterstützung benötigen, schlage ich vor, dass Sie die alte PIL 1.1.6-Distribution, die in PyPI verfügbar ist, meiden und einfach ein neues, aktuelles, kompatibles Pillow installieren.

1
python -m pip install pillow 

Das funktionierte für mich.

1

die Kissen Bibliothek installieren durch folgende Befehle:

pip install pillow 

Hinweis hat die gewählte Antwort veraltet ist. Lesen Sie die Dokumentation von SciPy

Beachten Sie, dass Kissen (https://python-pillow.org/) nicht eine Abhängigkeit von SciPy ist, aber die Bildmanipulation angegebenen Funktionen in der folgenden Liste sind ohne sie nicht zur Verfügung.

3

imread ist in SciPy 1.0.0 veraltet und wird in 1.2.0 entfernt. Verwenden Sie stattdessen imageio.imread.

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]) 
Verwandte Themen