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'
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>
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])
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
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.
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
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.
Für Python 3 ist es am besten, imread
in matplotlib.pyplot
zu verwenden:
from matplotlib.pyplot import imread
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
python -m pip install pillow
Das hat bei mir funktioniert.
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.
Die Lösung, die für mich in Python 3.6 funktioniert, ist die folgende
py-m Pip installieren Kissen
Ich habe alle Pakete für die Bildextraktion auf Jupyter Notebook, aber selbst dann zeigt es mir den gleichen Fehler.
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
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 Sieimageio.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)