Python在cv2.destroyWindow()之后冻结

时间:2012-12-05 23:16:24

标签: opencv python-2.7

我在Mac OS X(Lion)上使用Python 2.7下的openCV ......每当我运行代码来简单地显示相机源(来自iSight)时,Python会冻结。看起来相机实际上没有被清理干净。我使用了相同代码的许多不同版本(下面,来自SO上的一个不同的问题)并得到相同的结果(无论是在cv还是cv2)。任何人都知道为什么会这样吗?这是代码:

import cv2

cv2.namedWindow("camera",1)
capture = cv2.VideoCapture()
capture.open(0)
while True:
    img = capture.read()[1]
    cv2.imshow("camera", img)
    if cv2.waitKey(10) == 27: break
cv2.destroyWindow("camera")

5 个答案:

答案 0 :(得分:3)

这是所有基于* nux的系统的问题。请查看此问题以及StackOverflow上其他问题的答案。

DestroyWindow does not close window on Mac using Python and OpenCV

简而言之,您似乎需要在OpenCV中为消息泵调用waitKey()。

答案 1 :(得分:1)

检查此备用方法, IT需要ANACONDA环境 我的建议是在终端的python中运行代码。你不会遇到任何问题

复制相同的代码并使用filename.py

保存
import cv2
input = cv2.imread('path_to_image.png')
cv2.imshow('Hello World', input)
cv2.waitKey(0)
cv2.destroyAllWindows()

然后打开特定目录,然后打开终端

打开终端 - cd path/to/filename.py

  • source activate YOURPROFILE

  • python filename.py

这将解决问题

https://youtu.be/8O-FW4Wm10s

答案 2 :(得分:0)

我遇到了同样的问题,这是我的解决方案。

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

并在循环后把这个

cap.release()
cv2.destroyAllWindows()

PD:在这行代码中,capture = cv2.VideoCapture()你应该定义一个摄像机的值。

capture = cv2.VideoCapture(0)

答案 3 :(得分:0)

您使用的是哪个IDE?当我使用default IDE(IDLE)时,我遇到了同样的问题,但是我安装了PyCharm,它现在完美运行,图像窗口立即关闭,也使用waitkey(0)。< / p>

答案 4 :(得分:0)

在中断之前放置cv2.destroyAllWindows。它肯定会工作。

if cv2.waitKey(1) & 0xFF == ord('q'):
        stream.release()
        cv2.destroyAllWindows()
        break