【问题标题】:How to display image result on window in python openCV如何在python openCV中的窗口上显示图像结果
【发布时间】:2016-06-18 12:33:25
【问题描述】:

我打算显示每对图像之间的光流结果和差异图像,但图像窗口始终显示最后一对的结果,即使我可以看到图像已正确写入。
cv2.imshow('流',bgr) cv2.imshow('diff',diff) 有人能解释一下吗,谢谢!

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()

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    您需要将waitKey() 放入while 循环中:

    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()
    

    【讨论】:

    • 是的,你是对的。忘了添加那行代码。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 2021-03-13
    • 2011-09-24
    相关资源
    最近更新 更多