如何在ipython笔记本中显示PIL图像

Web*_*ode 82 python ipython python-imaging-library ipython-notebook

这是我的代码

from PIL import Image
pil_im = Image.open('data/empire.jpg')
Run Code Online (Sandbox Code Playgroud)

我想对它进行一些图像处理,然后在屏幕上显示它.
我在python笔记本中显示PIL图像有问题.

我试过了:

print pil_im
Run Code Online (Sandbox Code Playgroud)

只是

pil_im
Run Code Online (Sandbox Code Playgroud)

但两个人都给我:

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=569x800 at 0x10ECA0710>
Run Code Online (Sandbox Code Playgroud)

Anz*_*zel 126

您可以使用IPython Module: display来加载图像.您可以从Doc中阅读更多内容.

from IPython.display import Image 
Image(filename='data/empire.jpg')
Run Code Online (Sandbox Code Playgroud)

更新

作为OP的要求是使用PIL,如果你想显示内嵌图像,你可以用matplotlib.pyplot.imshownumpy.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))
Run Code Online (Sandbox Code Playgroud)

如果您只需要预览而不是内联,则可以使用show如下:

pil_im = Image.open('data/empire.jpg', 'r')
pil_im.show()
Run Code Online (Sandbox Code Playgroud)

  • 不要从`IPython.core`导入任何东西它不是稳定的api,我们直接在`IPython.display`中公开了稳定的api.我自己编辑了这篇文章. (5认同)

sat*_*hyz 31

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

  • 如果您只想快速检查图像,则可以“退还”它以查看其值,然后该图像将自动显示 (2认同)

Web*_*ode 19

我发现这很有效

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

在此之后,我可以这样做:

pil_im
Run Code Online (Sandbox Code Playgroud)

但这必须是单元格的最后一行,没有print

  • 您可以使用display.display来显示您立即创建的display.display图像,而不必依赖于单元格中的最后一个:display.display(ip_img)。您可以在这里使用它:https://www.tensorflow.org/tutorials/mandelbrot (2认同)

Pra*_*hat 15

在 jupyter 中使用枕头要简单得多。

from PIL import Image
image0=Image.open('image.png')
image0
Run Code Online (Sandbox Code Playgroud)


小智 14

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


M .*_*lin 6

您可以使用 PIL 包中的 Image 类打开图像,并直接使用 plt.imshow 显示它。

# First import libraries.
from PIL import Image
import matplotlib.pyplot as plt

# The folliwing line is useful in Jupyter notebook
%matplotlib inline

# Open your file image using the path
img = Image.open(<path_to_image>)

# Since plt knows how to handle instance of the Image class, just input your loaded image to imshow method
plt.imshow(img)
Run Code Online (Sandbox Code Playgroud)


小智 6

为了简单地在笔记本中可视化图像,您可以使用 display()

%matplotlib inline
from PIL import Image

im = Image.open(im_path)
display(im)
Run Code Online (Sandbox Code Playgroud)