2012-08-24 19 views
7

Ésta debe ser fácil, pero no puedo entender cómo en este momento sin necesidad de utilizar urllib módulo y manualmente ir a buscar archivos remotocómo trazar la imagen a distancia (desde la URL http)

Quiero superponer trama remota de imágenes con (vamos diga "http://matplotlib.sourceforge.net/_static/logo2.png"), y ni imshow() ni imread() pueden cargar la imagen.

¿Alguna idea de qué función permitirá cargar la imagen remota?

Respuesta

9

Es fácil de hecho:

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

Bueno, yo estaba esperando que MPL puede hacer esto w/o urllib, pero tal vez hipocresía. Esperaré un poco más y, si es imposible, te marcaré como respuesta – theta

+0

Mirando los documentos, no creo que sea posible. Y solo hay 2 líneas extra aquí, no es gran cosa. –

+0

Para Python 3, importe 'urllib' en lugar de' urllib2' y llame 'urllib.request.urlopen' en lugar de' urllib2.urlopen'. – Toby

3

Esto funciona para mí en un cuaderno con Python 3.5:

from skimage import io 
import matplotlib.pyplot as plt 

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

Obtuve 'ValueError: header PNG no válido' para la solución' urllib2', pero esto funcionó bien para mí –

+1

Para obtener skimage, 'pip install scikit-image' – Toby

Cuestiones relacionadas