我一直在使用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
我很难过,非常感谢任何帮助。
请注意:您需要插入网络摄像头才能测试代码
答案 0 :(得分:0)
使用sys.exit()
时,您的代码似乎退出正确地从提示中运行它并在Pycharm中运行。
如果您在Ipython
中运行它,则需要使用exit()
返回命令提示符:
在exit()
之后使用cv2.destroyAllWindows()
即可终止。
In [1]: type(exit)
Out[1]: IPython.core.autocall.ExitAutocall
答案 1 :(得分:0)
只是因为你从来没有得到答案......我只是遇到了同样的问题。事实证明这是因为在我的配置文件(运行/调试配置)中我之后检查了"显示命令行"框。一旦我取消选中窗口就被正确杀死了。