如何在 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 inline
在 for-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
希望对您有所帮助。
我有一个目录,里面有一些我需要阅读和显示的图片。
我写了这个,但是它的作用很奇怪,它在循环结束之前不显示任何图像!好像它缓冲了所有内容然后将其刷新!行号但是工作正常!这意味着它们会随着循环的进行而打印出来,当循环结束时,您会看到单元格上显示了很多图像!
这是代码:
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 rcParamfigure.max_open_warning
). max_open_warning, RuntimeWarning)
21)
22)
...
168)
First image
second image
third image
....
我怎样才能解决这个问题并让图像在获取时显示?
您没有看到预期连续图中的原因是因为 %matplotlib inline
在 for-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
希望对您有所帮助。