web-dev-qa-db-ja.com

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

私は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'
79
ustroetz

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

PillowはSciPyの依存関係ではありませんが、以下のリストに示されている画像操作機能はそれなしでは使用できないことに注意してください。

...

imread

...

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

In [1]: import scipy.misc

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

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

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

pip install scipy==1.1.0
14
mahbubcseju

Python 3の場合、matplotlib.pyplotimreadを使用するのが最適です。

from matplotlib.pyplot import imread
10
MasterJedi

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

このフォークはどのように「半公式」ですか? Pillowドキュメントの About ページには次のように記載されています。

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

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

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

8
Josh Hansen

次のコマンドでPillowライブラリをインストールします。

pip install pillow

選択した回答は古くなっていることに注意してください。 SciPy のドキュメントを参照してください

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

6
Steve

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

$ pip uninstall scipy

$ pip install scipy==1.1.0
5
SuperNova

ライブラリがインストールされている場合、ImreadはPILライブラリを使用します。「from scipy.ndimage import imread」

ソース: http://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.ndimage.imread.html

3
Dhananjay Mehta
python -m pip install pillow

これは私のために働いた。

2

答えたように、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配列は計算が速いため。

1
kshitij_p

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:imreadは非推奨です! 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)
1
Mike

python 3.6で動作するソリューションは次のとおりです。

py -m pip install Pillow

0

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

Jupyterノートブックのエラー

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

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

scipy==1.2.1
0
Raj

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

0
K.A.Pendragon