如何在 numpy 中打开 jpg?
How open a jpg in numpy?
我想从 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()
当我运行这段代码时,我得到错误:
TypeError: Image data can not convert to float
一种方法是使用 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')
或使用 plt.imread
和 format=
直接获得 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')
urllib
用于 html 文件。对于图像,您需要 imread
工具。
本机 plt.imread
仅打开 PNG
个文件。
对于JPG
文件你可以使用PIL或者Pillow for python 3,这是一个图像处理模块。仅针对 io 问题,imageio 是一种易于安装的现代替代方案:
im = imageio.imread('https://www.ibiblio.org/hyperwar/
USA/USA-EF-Defeat/maps/USA-EF-Defeat-40.jpg')
我想从 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()
当我运行这段代码时,我得到错误:
TypeError: Image data can not convert to float
一种方法是使用 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')
或使用 plt.imread
和 format=
直接获得 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')
urllib
用于 html 文件。对于图像,您需要 imread
工具。
本机 plt.imread
仅打开 PNG
个文件。
对于JPG
文件你可以使用PIL或者Pillow for python 3,这是一个图像处理模块。仅针对 io 问题,imageio 是一种易于安装的现代替代方案:
im = imageio.imread('https://www.ibiblio.org/hyperwar/
USA/USA-EF-Defeat/maps/USA-EF-Defeat-40.jpg')