it-swarm.com.de

das Modul scipy.misc hat kein Attribut imread?

Ich versuche ein Bild mit scipy zu lesen. Der scipy.misc.imread-Teil wird jedoch nicht akzeptiert. Was könnte die Ursache sein?

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

Sie müssen Pillow (früher PIL ) installieren. Von den Dokumenten am scipy.misc

Beachten Sie, dass Pillow keine Abhängigkeit von SciPy ist, aber die Bildbearbeitungsfunktionen, die in der folgenden Liste aufgeführt sind, nicht ohne sie verfügbar sind:

... 

imread

...

Nach der Installation von Pillow konnte ich wie folgt auf imread zugreifen:

In [1]: import scipy.misc

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

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])
17
Shadab

imread wird nach version 1.2.0 abgeschrieben! Um dieses Problem zu lösen, musste ich Version 1.1.0 installieren.

pip install scipy==1.1.0
14
mahbubcseju

Sie benötigen die Python Imaging Library (PIL)), aber leider scheint das PIL-Projekt aufgegeben worden zu sein. Insbesondere wurde es nicht nach Python portiert 3. Wenn Sie also die PIL-Funktionalität in Python 3 verwenden möchten, sollten Sie Pillow verwenden. Dies ist die halboffizielle Abzweigung von PIL und scheint es zu sein Wenn Sie überhaupt eine moderne PIL-Implementierung benötigen, empfehle ich Pillow. Es ist so einfach wie pip install pillow. Da es denselben Namespace wie PIL verwendet, handelt es sich im Wesentlichen um einen Drop-In-Ersatz.

Wie "halboffiziell" ist diese Gabelung? könnten Sie fragen. Auf der Seite About der Pillow-Dokumentation heißt es:

Je mehr Zeit seit der letzten PIL-Veröffentlichung vergangen ist, desto geringer ist die Wahrscheinlichkeit einer neuen PIL-Veröffentlichung. Wir haben jedoch noch keine offizielle "PIL ist tot" -Ankündigung erhalten. Wenn Sie PIL weiterhin unterstützen möchten, melden Sie bitte zuerst Probleme hier und öffnen Sie dann hier die entsprechenden Pillow-Tickets.

Bitte geben Sie einen Link zum ersten Ticket an, damit wir die Probleme im Vorfeld nachverfolgen können.

Die neueste PIL-Veröffentlichung auf der offiziellen PIL-Website ist jedoch auf den 15. November 2009 datiert neue Veröffentlichungen. Selbst wenn Sie keine Python 3-Unterstützung benötigen, sollten Sie die in PyPI verfügbare alte PIL 1.1.6-Distribution meiden und einfach ein neues, aktuelles und kompatibles Pillow installieren.

8
Josh Hansen

Falls jemand auf dasselbe Problem stößt, deinstallieren Sie bitte scipy und installieren Sie scipy == 1.1.0

$ pip uninstall scipy

$ pip install scipy==1.1.0
5
SuperNova

Installieren Sie die Kissenbibliothek mithilfe der folgenden Befehle:

pip install pillow

Beachten Sie, dass die ausgewählte Antwort veraltet ist. Siehe die Dokumente von SciPy

Beachten Sie, dass Pillow ( https://python-pillow.org/ ) keine Abhängigkeit von SciPy ist, aber die Bildbearbeitungsfunktionen, die in der nachstehenden Liste aufgeführt sind, nicht ohne sie verfügbar sind.

4
Steve

Für Python 3 ist es am besten, imread in matplotlib.pyplot zu verwenden:

from matplotlib.pyplot import imread
4
MasterJedi

Imread verwendet die PIL-Bibliothek. Wenn die Bibliothek installiert ist, verwenden Sie Folgendes: "From scipy.ndimage import imread"

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

3
Dhananjay Mehta
python -m pip install pillow

Das hat bei mir funktioniert.

2

Wie beantwortet, ist misc.imread in SciPy 1.0.0 veraltet und wird in 1.2.0 entfernt imageio ist eine Option.

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

verwenden Sie statt Imageio jedoch cv2

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

ich werde vom Typ sein: <class 'numpy.ndarray'>

Da numpy Arrays schneller zu berechnen sind.

1
kshitij_p

Die Lösung, die für mich in Python 3.6 funktioniert, ist die folgende

py-m Pip installieren Kissen

0

Ich habe alle Pakete für die Bildextraktion auf Jupyter Notebook, aber selbst dann zeigt es mir den gleichen Fehler.

Fehler auf Jupyter Notebook

In den obigen Kommentaren habe ich die erforderlichen Pakete installiert. Bitte sagen Sie mir, ob ich einige Pakete verpasst habe.

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

scipy==1.2.1
0
Raj

Sie benötigen eine Python-Bildbibliothek ( PIL ), aber jetzt ist PIL nicht mehr genug. Installieren Sie Pillow . Das funktioniert gut.

0
K.A.Pendragon

Beim Ausführen des folgenden in einem Jupyter Notebook hatte ich eine ähnliche Fehlermeldung:

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

'Fehler' msg:

D:\Programme (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\ipykernel_launcher.py: 3: DeprecationWarning: imread ist veraltet! imread ist in .__ veraltet. SciPy 1.0.0 und wird in 1.2.0 entfernt. Verwenden Sie imageio.imread stattdessen. Dies ist getrennt vom ipykernel-Paket, sodass wir .__ vermeiden können. Importe bis

Und mit dem folgenden habe ich es gelöst:

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