- cv.waitKey()
相当于cv.waitKey(0),即当前窗口持续显示,直至按下键盘或者点击窗口关闭。
可将其赋予一个对象,如key = cv.waitKey(),若通过键盘关闭,则返回键盘的ASCII值(Esc对应的ASCII值为27);若通过鼠标点击窗口关闭按钮关闭,则返回-1。 - cv.waitKey(int型数a)
当前窗口持续显示a毫秒,同样可将其赋予一个对象,如key = cv.waitKey(a)。若在[0,a]毫秒之内通过键盘关闭了窗口,则返回键盘ASCII值,若是a毫秒之后窗口自动关闭,则返回-1
2020.7.18补充:
waitkey适用于带窗口的延迟显示,但不限于imshow,包括qt的gui以及mfc的gui都可以,官方说明如下:
The function only works if there is at least one HighGUI window created and the window is active.
它并不能真正使程序暂停,所以不能当作程序暂停函数,不等于sleep()函数,它应该是调用了子线程做一个窗口的持续显示并等待按键输入,主线程只不过与子线程做了一个同步,但主线程并没有完全暂停,完全可以兼顾做其他事
我在qt中试过了,在waitkey()期间程序可以执行其他的槽函数,说明槽函数可以随时接管程序,执行完槽函数后再执行原来的程序,同时waitkey没有使得程序暂停
qt中按不同按钮会启用不同的槽函数,但这个槽函数不是子线程,我理解的是:按钮按下,程序认为这个事情优先级最高,所以放下当前所做的事去执行槽函数,但注意,这不是启动子线程,只是在执行当前槽函数,暂时放下了其他槽函数