2016-05-13 260 views
0

我构建了一个调用IP摄像头的python模块,但是当我尝试关闭由cv2生成的窗口时,窗口会一次又一次地在无限循环中生成。你能帮助我吗?如何关闭cv2窗口?

这是脚本

import cv2 

source = "rtsp://admin:[email protected]//Streaming/Channels/2" 
cap = cv2.VideoCapture(source) 

ok_flag = True 

while ok_flag: 
    (ok_flag, img) = cap.read() 

    if not ok_flag: 
     break 

    cv2.imshow("CallingCamera View", img) 
    if cv2.waitKey(1) == 27: 
     ok_flag = False 
     break 
cv2.destroyAllWindows() 

回答

0

我不能完全复制你的错误(我结束了崩溃与您的代码的Python),但我没有拿出一个修补程序。

while ok_flag: 
    (ok_flag, img) = cap.read() 
    cv2.imshow("CallingCamera View", img) 
    if cv2.waitkey(0) ==27: 
     ok_flag = False 

cv2.destroyAllWindows() 

我不知道你是否曾经为waitKey时间设定为1毫秒与否,出于测试目的将其设置为0(永远)的理由只是工作一样。我想把它设置为1ms,你会得到最新的图像?我的测试是使用驻留在桌面上的静态图像运行的。否则,删除两个休息时间,如果不是ok_flag语句,似乎将所有事情都解决了。你不需要这些,因为一旦ok_flag变为False,循环终止。

+0

但是,窗口仍然环,当我关闭相机的窗口时出现另一个窗口,所以我应该杀死我的程序,我想按ESC或关闭窗口 –

+0

@PatricioPalacios我不知道我跟着你。使用我发布的代码按下转义将关闭窗口并打破while循环。你是否想要使用鼠标关闭窗口并退出循环? – Grr