2012-08-24 16 views
7

To musi być proste, ale nie mogę zrozumieć, jak teraz bez użycia urllib moduł i ręcznie pobierając plik zdalnyJak wykreślić zdalnego obrazu (z http URL)

chcę nakładać działkę ze zdalnym obrazu (niech powiedz "http://matplotlib.sourceforge.net/_static/logo2.png") i ani imshow() ani imread() nie mogą załadować obrazu.

Jakieś pomysły, która funkcja pozwoli ładować zdalny obraz?

Odpowiedz

9

To jest rzeczywiście proste:

import urllib2 
import matplotlib.pyplot as plt 

# create a file-like object from the url 
f = urllib2.urlopen("http://matplotlib.sourceforge.net/_static/logo2.png") 

# read the image file in a numpy array 
a = plt.imread(f) 
plt.imshow(a) 
plt.show() 
+0

Cóż miałem nadzieję, że MPL może to zrobić w/o urllib, ale może go żargon. Poczekam jeszcze trochę i jeśli to rzeczywiście niemożliwe, zaznaczę ci odpowiedź – theta

+0

Patrząc na dokumenty, uważam, że nie jest to możliwe. A to tylko 2 linie dodatkowe tutaj, nic wielkiego. –

+0

Dla Pythona 3 zaimportuj 'urllib' zamiast' urllib2' i wywołaj 'urllib.request.urlopen' zamiast' urllib2.urlopen'. – Toby

3

To działa na mnie w zeszycie z Pythona 3.5:

from skimage import io 
import matplotlib.pyplot as plt 

image = io.imread(url) 
plt.imshow(image) 
plt.show() 
+1

Mam 'ValueError: nieprawidłowy nagłówek PNG' dla rozwiązania' urllib2', ale to zadziałało dobrze –

+1

Aby uzyskać skimage, 'pip install scikit-image' – Toby