【问题标题】:Window freezing even after using waitKey() and destroyAllwindows() in Opencv即使在 Opencv 中使用 waitKey() 和 destroyAllwindows() 后,窗口也会冻结
【发布时间】:2018-02-19 14:32:23
【问题描述】:

环境

操作系统-mint Linux, 使用opencv3.1,通过anaconda使用spyder

问题

下面提到的代码打开一个名称框架窗口并显示通过笔记本电脑摄像头捕获的视频。但是当我按'q'时,如代码中所述,它应该停止并终止窗口。但是,这里窗口停止显示任何进一步捕获的帧并且不会终止。然后我手动强制退出进程。

什么问题,为什么不终止窗口?

代码:-

import cv2

import numpy as np

cap = cv2.VideoCapture(0)

while(True):

        ret, frame = cap.read()

        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

cap.release()

cv2.destroyAllWindows()

【问题讨论】:

  • 可能是窗口偷走了焦点,所以当你按下“q”时,它没有被捕捉到它应该被捕捉到的地方。你能点击控制台,让它聚焦,然后在那里按“q”吗?
  • 我点击了它,然后按了“q”。只是视频停止并且窗口没有自动关闭。我通过单击关闭按钮手动关闭它然后强制退出。

标签: python opencv image-processing


【解决方案1】:

此问题存在一个未解决的错误:

https://github.com/opencv/opencv/issues/7343

也有类似的问题没有很好的解决办法:

opencv videocapture hangs/freeze when camera disconnected instead of returning "False"

在这里尝试解决方案:DestroyWindow does not close window on Mac using Python and OpenCV 多次调用 waitKey 似乎对很多人都有效。您也可以尝试不使用 release()

【讨论】:

  • Cool...waitKey(1) 是一个循环或者waitKey(1)m 第四次成功了...!!所以最终的代码是cap.release() cv2.destroyAllWindows( ) cv2.waitKey(1) cv2.waitKey(1) cv2.waitKey(1) cv2.waitKey(1)
【解决方案2】:

显然这解决了这个问题,只需在顶部添加这一行: import pyautogui

【讨论】:

    【解决方案3】:

    我使用 macOS BigSur 也遇到了这个问题,我用下面的行结束了我的代码,后来没有问题:

    video = cv.VideoCapture("your_video.mp4") # or 0 for your camera
    while(video.isOpened()):
        ret, frame = video.read()
        if ret:
    
            # Your frame manipulations
    
            if cv.waitKey(1) & 0xFF == ord('q'):
                video.release()
                cv.waitKey(0)
                cv.destroyAllWindows()
                break
        else:
            break
    video.release()
    cv.waitKey(0)
    cv.destroyAllWindows()
    

    这将破坏视频的冻结窗口,但您必须按 3 次 Q。如果您在 Jupiter Notebook 上运行,则按一次停止视频,再按一次用于关闭窗口,最后一次用于释放内核。 我还建议在应用代码后重新启动并清除内核选项卡中的所有输出,因为如果这样它就无法工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-29
      • 2017-04-11
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多