Matplotlib 如何打印远程映像(来自http url)

Matplotlib 如何打印远程映像(来自http url),matplotlib,Matplotlib,这一定很容易,但如果不使用urllib模块并手动获取远程文件,我无法想象现在该怎么做 我想用远程图像覆盖绘图(比如“http://matplotlib.sourceforge.net/_static/logo2.png),并且无论是imshow()还是imread()都不能加载图像 您知道哪种功能可以加载远程图像吗?确实很简单: import urllib2 import matplotlib.pyplot as plt # create a file-like object from the

这一定很容易,但如果不使用urllib模块并手动获取远程文件,我无法想象现在该怎么做

我想用远程图像覆盖绘图(比如“http://matplotlib.sourceforge.net/_static/logo2.png),并且无论是
imshow()
还是
imread()
都不能加载图像

您知道哪种功能可以加载远程图像吗?

确实很简单:

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()

对于我来说,这在使用python 3.5的笔记本中非常有效:

from skimage import io
import matplotlib.pyplot as plt

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

你可以用这个代码来做

from matplotlib import pyplot as plt
a = plt.imread("http://matplotlib.sourceforge.net/_static/logo2.png")
plt.imshow(a)
plt.show()

我希望MPL可以在不使用urllib的情况下实现这一点,但可能不行。我会再等一会儿,如果真的不可能,我会让你回答我看那些文件,我认为这是不可能的。这里只多出2行,没什么大不了的。对于python 3,导入
urllib
而不是
urllib2
,调用
urllib.request.urlopen
而不是
urllib2.urlopen
。此外,imread无法从这样的流中猜测文件类型。它默认为PNG,因此仅适用于PNG。对于非PNG文件,需要将format参数传递给imread(例如format='jpg')。这需要额外的工作才能从url中提取文件类型。我得到了
ValueError:invalid PNG header
,用于
urllib2
解决方案,但这对我来说效果很好,为了获得浏览,
pip install scikit image
适合我!(base:conda)您建议如何处理403个错误?