jupyter notebook 显示图片

概述

本文介绍在notebook中显示图片。

本文分两部分,一部分是将图片文件显示到notebook,另一部分是将numpy格式的图片显示到notebook

第一部分,将图片文件显示到notebook中

PIL+IPython.display(推荐)

from PIL import Image
import IPython.display as display

for filepath in filepaths:
    display.display(Image.open(filepath))

可显示多张图片

matplotlib

import matplotlib.pyplot as plt

for filepath in filepaths:
    plt.imshow(Image.open(filepath))
    plt.show()

注意:

  • 当图片过大时,会缩小显示
  • 灰度图等特殊像素图时,可能会显示成彩色图

有时,显示特殊图片时,会更方便,如下图:

看上去没有内容,但使用matplotlib能很方便的显示出来

IPython.display

import IPython.display as display

for filepath in filepaths:
    display.display(display.Image(filepath))

可显示多张图片

PIL

from PIL import Image

for filepath in filepaths:
    Image.open(filepaths)

用Image.open(filepaths)只会显示最后一张图片


第二部分,将numpy数据显示成图片

将图片读取并转成numpy矩阵,

RGB图如下:

import numpy as np
from PIL import Image

img=Image.open(r"C:\Users\mym\Desktop\文件接收柜\下载 (5).png")
arr=np.array(img)

灰度图如下:

import numpy as np
from PIL import Image

img_g=Image.open(r"C:\Users\mym\Desktop\文件接收柜\猫1.jpg").convert("L")
arr_g=np.array(img_g)

我们常常要将numpy矩阵的图片显示到notebook中,主要有以下几个方法:

PIL.Image(简单)

显示RGB图:

from PIL import Image

Image.fromarray(arr)

执行结果:

小结:按照原始大小显示图片(图片过大会等比例缩小)

显示灰度图

Image.fromarray(arr_g)

执行结果:

小结:按照原始大小显示灰度图片(图片过大会等比例缩小)

在循环中 不 显示图片

for i in range(5):
    Image.fromarray(arr)

IPython.display+PIL(推荐)

需要用到Image.fromarray()

显示RGB图:

from PIL import Image
import IPython.display as display

display.display(Image.fromarray(arr))

执行结果:

小结:按照原始大小显示图片(图片过大会等比例缩小)

显示灰度图

from PIL import Image
import IPython.display as display

display.display(Image.fromarray(arr_g ))

执行结果:

小结:按照原始大小显示灰度图片(图片过大会等比例缩小)

循环显示多张图片

import IPython.display as display
for i in range(5):
    display.display(Image.fromarray(arr))

循环显示一张图片

import IPython.display as display
for i in range(5):
    display.clear_output() # 清空
    display.display(Image.fromarray(arr))

matplotlib

matplotlib显示大图时,会按比例缩小;显示特殊图片时,会做改动,不会按照原图显示

显示RGB图:

import matplotlib.pyplot as plt
plt.imshow(arr)
plt.show()

执行结果如下:

缺点:没有按照原大小显示

显示灰度图(默认是伪彩色图):

matplotlib显示灰度图时,显示成伪彩色图,不会按照原图显示

import matplotlib.pyplot as plt
plt.imshow(arr_g)
plt.show()

显示结果如下:

注意: 显示灰度图时,显示成伪彩色图

显示灰度图:

import matplotlib.pyplot as plt
plt.imshow(arr_g,cmap="gray")
plt.show()

显示结果如下:

缺点:必须加上cmap="gray"参数

循环显示多张图片

import matplotlib.pyplot as plt

for i in range(5):
    plt.imshow(arr_g,cmap="gray")
    plt.show()

注意:必须加上plt.show(),否则只显示一张图片