9

我在 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")
4

5 回答 5

3

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

DestroyWindow 不会在 Mac 上使用 Python 和 OpenCV 关闭窗口

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

于 2012-12-12T23:17:51.593 回答
1

检查这个替代方法, 它需要 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

  • 源激活您的个人资料

  • 蟒蛇文件名.py

这将解决问题

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

于 2017-09-24T16:23:30.890 回答
0

将 cv2.destroyAllWindows 放在 break 之前。它肯定会奏效。

if cv2.waitKey(1) & 0xFF == ord('q'):
        stream.release()
        cv2.destroyAllWindows()
        break
于 2019-07-05T12:00:20.483 回答
0

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

于 2018-02-24T10:21:45.457 回答
0

我有同样的问题,这是我的解决方案。

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

然后循环放这个

cap.release()
cv2.destroyAllWindows()

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

capture = cv2.VideoCapture(0)
于 2017-02-19T18:57:13.273 回答