2017-02-23 17 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

'% for 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.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 

나는 이것이 도움이되기를 바란다.

관련 문제