如何在ipython(jupyter)笔记本中连续显示每张图片?

时间:2017-02-23 16:13:03

标签: python ipython-notebook jupyter-notebook

我有一个目录,里面有一些我需要阅读和显示的图片 我写了这个,但是它做了什么,很奇怪,在循环结束之前它不会显示任何图像!就像它缓冲一切然后冲洗它!行号然而工作正常!这意味着它们在循环结束时打印出来,当循环结束时,您会看到很多图像在单元格上显示! 这是代码:

import os
%matplotlib inline
img_dir = 'G:/deep-visualization-toolbox/input_images3/'
i = 0
for file in os.listdir(img_dir):
    img = caffe.io.load_image(img_dir+file)
    print '{0})'.format(i)
    plt.figure()
    plt.imshow(img)
    i+=1

并输出:

0)
1)
2)
3)
4)
5)
6)
7)
...
  

C:\用户\万事达\ Anaconda2 \ lib中\站点包\ matplotlib \ pyplot.py:524:   运行时警告:已打开超过20个数字。数字创建   通过pyplot接口(matplotlib.pyplot.figure)被保留   直到明确关闭并可能消耗太多内存。 (控制   此警告,请参阅rcParam figure.max_open_warning)。   max_open_warning,RuntimeWarning)

21)
22)
...
168)
First image 
second image 
third image 
....

如何解决此问题并获取图像以显示它们?

1 个答案:

答案 0 :(得分:1)

您没有看到预期连续中的情节是因为%matplotlib inlinefor-loop内没有生效。因此,您需要在plt.show()下方添加plt.imshow(img)以强制显示数字。以下是我将如何做到这一点:

from glob import glob
from scipy.misc import imread
import matplotlib.pyplot as plt


%matplotlib inline


img_dir = 'G:/deep-visualization-toolbox/input_images3/'

i = 0

for img_file in glob(img_dir+'*'):
    img = imread(img_file)
    print '{0}'.format(i)
    plt.figure()
    plt.imshow(img)
    plt.show()
    i+=1

我希望这会有所帮助。