这是我的代码
from PIL import Image
pil_im = Image.open('data/empire.jpg')
我想对它进行一些图像处理,然后在屏幕上显示 我在python笔记本中显示PIL图像有问题。
我试过了:
print pil_im
只是
pil_im
但两人都给我:
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=569x800 at 0x10ECA0710>
答案 0 :(得分:104)
您可以使用IPython&#39; Module: display
加载图片。您可以从the Doc了解更多信息。
from IPython.display import Image
Image(filename='data/empire.jpg')
由于OP要求使用PIL
,如果您想要显示内联图片,您也可以matplotlib.pyplot.imshow
使用numpy.asarray
这样的内容:
from matplotlib.pyplot import imshow
import numpy as np
from PIL import Image
%matplotlib inline
pil_im = Image.open('data/empire.jpg', 'r')
imshow(np.asarray(pil_im))
如果您只需要预览而不是内嵌,则可以像这样使用show
:
pil_im = Image.open('data/empire.jpg', 'r')
pil_im.show()
答案 1 :(得分:19)
使用IPython显示在笔记本中渲染PIL图像。
from PIL import Image # to load images
from IPython.display import display # to display images
pil_im = Image.open('path/to/image.jpg')
display(pil_im)
答案 2 :(得分:15)
我发现这是有效的
# source: http://nbviewer.ipython.org/gist/deeplook/5162445
from io import BytesIO
from IPython import display
from PIL import Image
def display_pil_image(im):
"""Displayhook function for PIL Images, rendered as PNG."""
b = BytesIO()
im.save(b, format='png')
data = b.getvalue()
ip_img = display.Image(data=data, format='png', embed=True)
return ip_img._repr_png_()
# register display func with PNG formatter:
png_formatter = get_ipython().display_formatter.formatters['image/png']
dpi = png_formatter.for_type(Image.Image, display_pil_image)
在此之后,我可以这样做:
pil_im
但这必须是单元格中的最后一行,后面没有print
答案 3 :(得分:12)
case python3
from PIL import Image
from IPython.display import HTML
from io import BytesIO
from base64 import b64encode
pil_im = Image.open('data/empire.jpg')
b = BytesIO()
pil_im.save(b, format='png')
HTML("<img src='data:image/png;base64,{0}'/>".format(b64encode(b.getvalue()).decode('utf-8')))
答案 4 :(得分:2)
如果你正在使用pylab扩展,你可以将图像转换为numpy数组并使用matplotlib的imshow。
%pylab # only if not started with the --pylab option
imshow(array(pil_im))
编辑: 正如评论中所提到的,pylab模块已被弃用,因此请改用matplotlib magic并明确导入函数:
%matplotlib
from matplotlib.pyplot import imshow
imshow(array(pil_im))
答案 5 :(得分:2)
根据其他答案和我的尝试,最好的经验是首先安装,枕头和scipy,然后在你的jupyter笔记本上使用以下启动代码:
%matplotlib inline
from matplotlib.pyplot import imshow
from scipy.misc import imread
imshow(imread('image.jpg', 1))
答案 6 :(得分:2)
为了简单地显示笔记本中的图像,可以使用display()
%matplotlib inline
from PIL import Image
im = Image.open(im_path)
display(im)
答案 7 :(得分:1)
您可以使用PIL包中的Image类打开图像,并直接通过plt.imshow显示它。
from PIL import Image
import matplotlib.pyplot as plt
%matplotlib inline
img = Image.open(<path_to_image>)
plt.imshow(img)
答案 8 :(得分:1)
使用标准numpy,matplotlib和PIL的更干净的Python3版本。合并从URL打开的答案。
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
pil_im = Image.open('image.jpg')
## Uncomment to open from URL
#import requests
#r = requests.get('https://www.vegvesen.no/public/webkamera/kamera?id=131206')
#pil_im = Image.open(BytesIO(r.content))
im_array = np.asarray(pil_im)
plt.imshow(im_array)
plt.show()
答案 9 :(得分:1)
使用枕头在jupyter中简单得多。
from PIL import Image
image0=Image.open('image.png')
image0
答案 10 :(得分:0)
只需使用
from IPython.display import Image
Image('image.png')
答案 11 :(得分:-1)
我建议在安装后不要显示任何图像img.show() (来自PIL导入图像)
$ sudo apt-get install imagemagick