私は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'
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])
imreadはバージョン1.2.0以降で減価償却されます!この問題を解決するには、バージョン1.1.0をインストールする必要がありました。
pip install scipy==1.1.0
Python 3の場合、matplotlib.pyplot
でimread
を使用するのが最適です。
from matplotlib.pyplot import imread
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をインストールすることをお勧めします。
次のコマンドでPillowライブラリをインストールします。
pip install pillow
選択した回答は古くなっていることに注意してください。 SciPy のドキュメントを参照してください
Pillow( https://python-pillow.org/ )はSciPyの依存関係ではありませんが、以下のリストに示されている画像操作関数はそれなしでは使用できないことに注意してください。
同じ問題が発生した場合は、scipyをアンインストールしてscipy == 1.1.0をインストールしてください
$ pip uninstall scipy
$ pip install scipy==1.1.0
ライブラリがインストールされている場合、ImreadはPILライブラリを使用します。「from scipy.ndimage import imread」
ソース: http://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.ndimage.imread.html
python -m pip install pillow
これは私のために働いた。
答えたように、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配列は計算が速いため。
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)
python 3.6で動作するソリューションは次のとおりです。
py -m pip install Pillow
Jupyter Notebookでのイメージ抽出に必要なすべてのパッケージを持っていますが、それでも同じエラーが表示されます。
上記のコメントを読んで、必要なパッケージをインストールしました。私がいくつかのパッケージを見逃したかどうか教えてください。
pip3 freeze | grep -i -E "pillow|scipy|scikit-image"
Pillow==5.4.1
scikit-image==0.14.2
scipy==1.2.1