web-dev-qa-db-ja.com

ipythonノートブックでPILイメージを表示する方法

これは私のコードです

from PIL import Image
pil_im = Image.open('data/empire.jpg')

その上でいくつかの画像操作を行い、画面に表示したいと思います。
PILイメージをpythonノートブックに表示するのに問題があります。

私が試してみました:

print pil_im

そしてただ

pil_im

しかし、両方とも私に与えます:

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=569x800 at 0x10ECA0710>
72
WebOrCode

IPythonのModule: displayを使用して画像をロードできます。 ドキュメント から詳細を読むことができます。

from IPython.display import Image 
Image(filename='data/empire.jpg')

更新しました

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

インラインではなくプレビューのみが必要な場合は、次のようにshowを使用できます。

pil_im = Image.open('data/empire.jpg', 'r')
pil_im.show()
113
Anzel

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)
23
sathyz

これが機能していることがわかりました

# 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の後にはありません。

16
WebOrCode

ケース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')))
12
gaziya

Pylab拡張機能を使用している場合、イメージをnumpy配列に変換し、matplotlibのimshowを使用できます。

%pylab # only if not started with the --pylab option
imshow(array(pil_im))

編集:コメントで述べたように、pylabモジュールは非推奨です。そのため、代わりにmatplotlibマジックを使用し、関数を明示的にインポートします。

%matplotlib
from matplotlib.pyplot import imshow 
imshow(array(pil_im))
2
Rob

他の回答と私の試みに基づいて、最高の経験は、最初にpillowとscipyをインストールし、次にjupyterノートブックで次の開始コードを使用することです。

%matplotlib inline
from matplotlib.pyplot import imshow
from scipy.misc import imread

imshow(imread('image.jpg', 1))
2
Ebrahim Byagowi

パッケージPILのImageクラスを使用して画像を開き、plt.imshowで直接表示できます。

from PIL import Image
import matplotlib.pyplot as plt
%matplotlib inline

img = Image.open(<path_to_image>)
plt.imshow(img)
1
M . Franklin

標準の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()
1
Punnerud