2017-02-23 11 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:Users \ユーザー\マスター\ Anaconda2 \ libに\のsite-packages \ 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:どうもありがとうございます、anwerとして投稿してください:) – Breeze

答えて

1

予想される連続でプロットが表示されない理由は、for-loopの中で%matplotlib inlineが有効にならないためです。したがって、数字を強制的に表示するには、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 

私はこれが役立ちます。

関連する問題