scipy.miscモジュールには属性imreadはありませんか?


125

scipyで画像を読み込もうとしています。ただしそのscipy.misc.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'

どのバージョンのScipyを使用していますか?私のためにscipy.__version__与え0.9.0、私はあなたの問題を再現することはできません
ハネス

あなたが行う場合は、同じエラーが出るかfrom scipy.misc import imread、その後、とimread('test.tif')
karthikr 2013年

@karthikrはい、そのために同じエラーが発生します。
ustroetz 2013年

4
この機能は、インストールされているPIL(pythonware.com/products/pil)に依存すると思います。PILはありますか?
Wilduck 2013年

6
imreadはSciPy 1.0.0で廃止され、1.2.0で削除されました。imageio.imread代わりに使用してください。
Manas

回答:


137

Pillow(以前のPIL)をインストールする必要があります。ドキュメントscipy.misc

PillowはSciPyの依存関係ではありませんが、以下のリストに示されている画像操作関数はそれなしでは利用できません。

...

imread

...

Pillowをインストールした後imread、次のようにアクセスできました。

In [1]: import scipy.misc

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

Orz、でも私がPILをインストールすれば、それは私に与える<PngImagePlugin.PngImageFile...
Allan Ruin

21
これで、PILではなくPillowになります。参照: pillow.readthedocs.org
Zhong

あなたは私の日を救ったが、なぜscipyのドキュメントがとても貧弱なのか!私の手順は、numpy + MKL> Pillow> Scipyをインストールすることです。すべて、カリフォルニア大学アーバイン校からWindows用にコンパイルされたPythonモジュールをダウンロードします。
SIslam 2016年

4
READ THE NEXTのANSWER(Shadabの答え@)だけでなく、それはちょうどだとノートimageio、ではありませんscipy.imageio
Terry Brown、

4
これは最新バージョンのSciPy(1.3.0)では機能しないことに注意してください。Shadabのソリューションが機能します。
Nikhil Gupta

106

imreadはSciPy 1.0.0で廃止され、1.2.0で削除されます。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])

12
numpy.ndarrayを返すために使用されるSciPyのimread。imageio.imreadはimageio.core.util.Arrayを返します。numpy.ndarrayが必要/必要で、変換したくない場合は、nump.ndarrayも返すため、matplotlib.pyplot.imreadを使用します。
Stefan

1
ここでも同様の問題がありますが、に関してimresizeです。以前はscipy.misc.imresize動作します。現在は非推奨になっており、これの代替はどこで入手できますか?
saichand

これは冗談です@saichand
filip

1
@filip、私はscipy.misc.imresizeを使ってみました。現在は機能しませんが、以前使用していたことがあります。私が言ったことが、冗談ではなく、そのコメントに間違いがあった場合、あなたが私を訂正してくれることを願っています。私は自分の過ちから学ぶことができます。コメントの何が問題になっていますか?ありがとうございました。
saichand

まあ私はそれを書いた当時私が私のコメントに少しイライラしていたことを認めなければなりません:P。私が言ったのは、彼らがWindowsのscipyに1.0以下のホイールやインストールを提供しなかった冗談だということです。まだ使用している場合は、scipy == 1.2.0を使用できます(非推奨としてマークされているので、引き続き機能します!)@saichand
filip

48

imreadはバージョン1.2.0以降は廃止されます!この問題を解決するには、バージョン1.1.0をインストールする必要がありました。

pip install scipy==1.1.0

3
@Shadabの答えを見てください、それはimageio今です。
Terry Brown、


17

同じ問題が発生した場合は、scipyをアンインストールして、scipy == 1.1.0をインストールしてください。

$ pip uninstall scipy

$ pip install scipy==1.1.0

9

残念ながら、Python Imaging Library(PIL)が必要です。PILプロジェクトは放棄されたようです。特に、Python 3には移植されていません。そのため、Python 3でPIL機能が必要な場合は、PILの半公式フォークであり、活発に開発されているように見えるPillowを使用することをお勧めします。実際、最新のPIL実装が必要な場合は、Pillowをお勧めします。と同じくらい簡単pip install pillowです。PILと同じ名前空間を使用するため、本質的にはドロップインの代替品です。

このフォークはどのように「準公式」ですか?あなたが尋ねるかもしれません。Pillow docs のAboutページには次のように書かれています。

最後のPILリリースから時間が経過するにつれて、新しいPILリリースの可能性は減少します。しかし、公式の「PILは死んだ」という発表はまだ聞いていません。それでもPILをサポートしたい場合は、まずここで問題を報告してから、対応する枕チケットをここで開いてください。

上流で問題を追跡できるように、最初のチケットへのリンクを提供してください。

ただし、公式のPILサイトでの最新のPILリリースは2009年11月15日です。新しいリリースから8年近く経っていない(この記事の執筆時点では)後、PillowをPILの後継者として安全に宣言できると思います。そのため、Python 3のサポートが必要ない場合でも、PyPIで利用できる古いPIL 1.1.6ディストリビューションを避け、最新の互換性のあるPillowをインストールすることをお勧めします。


7

以下のコマンドを実行して、Pillowライブラリをインストールします。

pip install pillow

選択した回答は古くなっています。SciPyのドキュメントを見る

Pillow(https://python-pillow.org/)はSciPyの依存関係ではありませんが、以下のリストに示されている画像操作関数はそれなしでは利用できません。


6

回答どおり、misc.imreadはSciPy 1.0.0で非推奨になり、1.2.0で削除されます。imageioは1つのオプションで、タイプのオブジェクトを返します。

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

しかし、imageioの代わりに、cv2を使用してください

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

imはタイプになります。 <class 'numpy.ndarray'>

numpy配列の方が計算が速いので。


imageioは機能しますが、cv2がエラーを引き起こします:libpng警告:IHDRの画像の高さが無効です
sailfish009



1

Pythonイメージライブラリ(PIL)が必要ですが、PILだけでは不十分なので、Pillowをインストールすることをお勧めします。これはうまくいきます。


2
受け入れられた回答には、のpillow代わりに使用する必要があると既に述べたコメントがありPILます。回答として追加することは悪い考えではないと思いますが、理由を説明すると、はるかに役立つでしょう。ありがとう。
lrnzcig

1

Jupyter Notebookで次を実行すると、同様のエラーメッセージが表示されました。

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

「エラー」メッセージ:

D:\ Program Files(x86)\ Microsoft Visual Studio \ Shared \ Anaconda3_64 \ lib \ site-packages \ ipykernel_launcher.py:3:DeprecationWarning:is imreaddeprecated!imreadはSciPy 1.0.0で廃止され、1.2.0で削除されます。imageio.imread 代わりに使用してください。これはipykernelパッケージとは別であるため、インポートするまで回避できます

そして、以下を使用して私はそれを解決しました:

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

質問とは関係ありません。それは別の問題と答えです。
HalisYılboğa19年

1

私はjupyter Notebookでの画像抽出に必要なすべてのパッケージを持っていますが、それでも同じエラーが表示されます。

Jupyter Notebookのエラー

上記のコメントを読んで、必要なパッケージをインストールしました。いくつかのパッケージを見逃したかどうか教えてください。

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

scipy==1.2.1

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.