[python] ipython 노트북에서 PIL 이미지를 표시하는 방법

이것은 내 코드입니다

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

이미지 조작을 한 다음 화면에 표시하고 싶습니다.
파이썬 노트북에서 PIL 이미지를 표시하는 데 문제가 있습니다.

나는 시도했다 :

print pil_im

그리고 그냥

pil_im

하지만 둘 다 나에게 줘 :

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



답변

IPython Module: display을 사용하여 이미지를로드 할 수 있습니다 . 문서 에서 더 많은 것을 읽을 수 있습니다 .

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

업데이트 됨

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


답변

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)


답변

이것이 효과가 있음을 알았습니다.

# 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합니다.


답변

케이스 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')))


답변

베개를 사용하는 jupyter에서 훨씬 간단합니다.

from PIL import Image
image0=Image.open('image.png')
image0


답변

패키지 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)


답변

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