【发布时间】:2014-06-01 08:13:41
【问题描述】:
我一直在使用 OpenCV 在 python 中编写程序。到目前为止,我还没有设置鼠标回调(cv2.setMouseCallback)。要退出程序(全屏),我会按 ESC 键(第 70 行)。
我最近添加了一个鼠标回调(第 11 行),它可以正常工作,但是,现在当我按下 ESC 键时,程序不会像以前那样终止。 while 循环结束,调用 cv2.destroyAllWindows() 和 sys.exit(0)。窗口确实关闭了,在 sys.exit(0) 之后没有执行任何 python 代码,但是在命令提示符中没有返回任何提示(python 程序是在其中启动的)。
我的第一个想法是有一个线程没有停止运行,但是我的代码中没有线程,并且调用 onMouse 函数的线程(第 50 行)与主循环线程相同(即opencv 似乎没有用于鼠标回调的单独线程)。
我的代码可以在这里找到:http://pastie.org/9246511
我很困惑,非常感谢任何帮助。
请注意:您需要插入网络摄像头来测试代码
【问题讨论】:
-
你是在 ipython 中运行的吗?
-
@PadraicCunningham 不,库存 Python 2.7.6
-
我运行了你的代码,我可以复制你的错误的唯一方法是在 ipython shell 中运行。你用的是什么操作系统?使用 exit 时,您会得到相同的行为吗?
-
@PadraicCunningham Win32,64 位。我得到了完全相同的行为。我只是在 PyCharm 中运行它,同样的问题。按 ESC 后,程序似乎结束了,但是 PyCharm 仍然报告程序正在运行。
-
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32