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

How can I display each picture in a row in ipython(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:\Users\Master\Anaconda2\lib\site-packages\matplotlib\pyplot.py:524: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (matplotlib.pyplot.figure) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam figure.max_open_warning). max_open_warning, RuntimeWarning)

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

我怎样才能解决这个问题并让图像在获取时显示?

您没有看到预期连续图中的原因是因为 %matplotlib inlinefor-loop 中没有生效。因此,您需要在 plt.imshow(img) 正下方添加 plt.show() 以强制显示图形。以下是我的做法:

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

希望对您有所帮助。