OpenCV(Python)setMouseCallback阻止程序终止

时间:2014-06-01 08:13:41

标签: python opencv

我一直在使用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

我很难过,非常感谢任何帮助。

请注意:您需要插入网络摄像头才能测试代码

2 个答案:

答案 0 :(得分:0)

使用sys.exit()时,您的代码似乎退出正确地从提示中运行它并在Pycharm中运行。

如果您在Ipython中运行它,则需要使用exit()返回命令提示符:

exit()之后使用cv2.destroyAllWindows()即可终止。

In [1]: type(exit)
Out[1]: IPython.core.autocall.ExitAutocall 

答案 1 :(得分:0)

只是因为你从来没有得到答案......我只是遇到了同样的问题。事实证明这是因为在我的配置文件(运行/调试配置)中我之后检查了"显示命令行"框。一旦我取消选中窗口就被正确杀死了。