2016-06-18 9 views
0

私はオプティカルフローの結果と差分画像をすべての画像ペアで表示しようとしていますが、画像ウィンドウは常に画像が表示されていても最後のペアからの結果を表示します正しく書かれています。
cv2.imshow( 'flow'、bgr) cv2.imshow( 'diff'、diff) 誰かがこれに光を当てることができました、ありがとう!pythonでウィンドウに画像の結果を表示する方法openCV

import numpy as np 
import cv2 


dirOC = 'ImgDir_OriC\\' 
dirTC = 'ImgDir_TransC\\' 
suffix = '.bmp' 
fCount = 11 
count = 0 
MAX = 10 
while(count < MAX): 
    fNameO = dirOC + str(fCount) + suffix 
    fNameT = dirTC + str(fCount) + suffix 
    print fNameO 
    print fNameT 

    imgO = cv2.imread(fNameO, cv2.IMREAD_COLOR) 
    prvs = cv2.cvtColor(imgO,cv2.COLOR_BGR2GRAY) 

    imgT = cv2.imread(fNameT, cv2.IMREAD_COLOR) 
    next = cv2.cvtColor(imgT,cv2.COLOR_BGR2GRAY) 

    flow = cv2.calcOpticalFlowFarneback(prvs,next, 0.5,3,15,15,3,5,1) 
    mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])  

    hsv = np.zeros_like(imgO)  
    hsv[...,1] = 255 
    hsv[...,0] = ang*180/np.pi/2  
    hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)   
    bgr = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR) 
    cv2.imshow('flow',bgr) 

    diff = np.zeros_like(prvs)  
    cv2.subtract(prvs,next,diff) 
    cv2.imshow('diff',diff) 

    cv2.imwrite('flow'+str(fCount) + '.png',bgr)  
    cv2.imwrite('diff'+str(fCount) + '.png',diff) 

    fCount = fCount +1 
    count = count +1  


cv2.waitKey(0) 
cv2.destroyAllWindows() 

答えて

1

あなたはwhileループ内waitKey()を配置する必要があります:

import numpy as np 
import cv2 

dirOC = 'ImgDir_OriC\\' 
dirTC = 'ImgDir_TransC\\' 
suffix = '.bmp' 
fCount = 11 
count = 0 
MAX = 10 
while(count < MAX): 
    fNameO = dirOC + str(fCount) + suffix 
    fNameT = dirTC + str(fCount) + suffix 
    print fNameO 
    print fNameT 

    imgO = cv2.imread(fNameO, cv2.IMREAD_COLOR) 
    prvs = cv2.cvtColor(imgO,cv2.COLOR_BGR2GRAY) 

    imgT = cv2.imread(fNameT, cv2.IMREAD_COLOR) 
    next = cv2.cvtColor(imgT,cv2.COLOR_BGR2GRAY) 

    flow = cv2.calcOpticalFlowFarneback(prvs,next, 0.5,3,15,15,3,5,1) 
    mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])  

    hsv = np.zeros_like(imgO)  
    hsv[...,1] = 255 
    hsv[...,0] = ang*180/np.pi/2  
    hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)   
    bgr = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR) 
    cv2.imshow('flow',bgr) 

    diff = np.zeros_like(prvs)  
    cv2.subtract(prvs,next,diff) 
    cv2.imshow('diff',diff) 

    cv2.imwrite('flow'+str(fCount) + '.png',bgr)  
    cv2.imwrite('diff'+str(fCount) + '.png',diff) 

    fCount = fCount +1 
    count = count +1  

    cv2.waitKey(0) # <<<<<<< inside the while loop 

cv2.destroyAllWindows() 
+0

はい、あなたは正しいです。そのコード行を追加するのを忘れてしまった。ありがとう。 – user1304846

関連する問題