如何在numpy中打开jpg?

Jac*_*ack 7 url numpy image urllib2

我想从 url 加载 jpg 图像作为 numpy 数组。但每当我这样做时,我都会收到错误。有人可以告诉我该怎么做才能使我的代码正常工作吗?

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()
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,出现错误:

TypeError: Image data can not convert to float
Run Code Online (Sandbox Code Playgroud)

Zer*_*ero 6

一种方法是使用PIL加载 JPG 图像

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')
Run Code Online (Sandbox Code Playgroud)

或者使用plt.imreadwithformat=直接获取 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')
Run Code Online (Sandbox Code Playgroud)

  • 但是OP询问如何在numpy中打开图像 (6认同)