我在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")
答案 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
这将解决问题
答案 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