2017-02-23 118 views
1

我有一些圖片需要閱讀和顯示。
我寫了這個,但它做了什麼,很奇怪,它不顯示任何圖像,直到循環結束!就好像它緩衝了一切然後刷新它!行號然而工作正常!這意味着它們會在循環繼續時打印出來,並且循環結束時,會看到很多圖像顯示在單元格上! 這裏是代碼:如何在ipython(jupyter)筆記本中顯示每行圖片?

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: RuntimeWarning :超過20個數字已經打開。通過pyplot接口(matplotlib.pyplot.figure)創建的圖形 保留 ,直到顯式關閉並可能消耗太多內存。 (要控制 此警告,請參閱rcParam figure.max_open_warning)。 max_open_warning,RuntimeWarning)

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

我怎樣才能擺脫這個問題,並得到了圖像顯示爲他們取?

+1

'%matplotlib inline'在'for-loop'內不生效。您需要在'for-loop'內的'plt.imshow(img)'後面調用'plt.show()'。否則,'%matplotlib inline'只會在退出'for-loop'後纔會應用。 – Abdou

+0

@Abdou:非常感謝,請把它當作是:) – Breeze

回答

1

您沒有看到預期的繼承情節的原因是因爲%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 

我希望這會有所幫助。

相關問題