2016-03-28 7 views
2

urlからjpgイメージをnumpy配列としてロードしたい。しかし、私がしなければ、私はエラーが発生します。誰かが自分のコードを動作させるために何ができるのか教えてもらえますか?どのようにnumpyでjpgを開きますか?

import urllib2 
import matplotlib.pyplot as plt 
import numpy as np 
f=urllib2.urlopen("https://www.ibiblio.org/hyperwar/USA/USA-EF-Defeat/maps/USA-EF-Defeat-40.jpg") 
print(f.shape) 
plt.imshow(f) 
plt.show() 

私はこのコードを実行すると、私はエラーを取得:

TypeError: Image data can not convert to float 

答えて

1

一つの方法、

import urllib2 
import cStringIO 
from PIL import Image 
import matplotlib.pyplot as plt 

%matplotlib inline 


url='https://www.ibiblio.org/hyperwar/USA/USA-EF-Defeat/maps/USA-EF-Defeat-40.jpg' 
im = Image.open(cStringIO.StringIO(urllib2.urlopen(url).read())) 
plt.imshow(im, cmap='Greys_r') 

または持っているformat=plt.imreadを使用したJPG画像をロードするためにPILを使用することです直接numpy形式の画像。

im = plt.imread(urllib2.urlopen(url), format='jpeg') 
# or using `io.BytesIO` 
# im = plt.imread(io.BytesIO(urllib2.urlopen(url).read()), format='jpeg') 
plt.imshow(im, cmap='Greys_r') 
0

urllibは、htmlファイル用です。画像の場合はimreadツールが必要です。

ネイティブplt.imreadオープンPNGファイルのみ。

JPGファイルの場合、画像処理モジュールであるpython 3にPILまたはPillowを使用できます。 ioの関心事についてのみ、imageioは現代的でインストールが簡単な代替手段です:

im = imageio.imread('https://www.ibiblio.org/hyperwar/ 
USA/USA-EF-Defeat/maps/USA-EF-Defeat-40.jpg') 
関連する問題