简单、常用的键盘事件是等待按键事件,它由waitKey函数来实现,该函数是我们的老朋友了,前面也碰到过多次。无论是刚开始学习OpenCV,还是使用OpenCV进行开发调试,都可以看到waitKey函数的身影。然而,基础的东西往往容易被忽略掉,在此可以好好了解一下这个基础又常用的waitKey函数。该函数延时一定时间,返回按键的值;当参数为0时就永久等待,直到用户按键。该函数声明如下:
waitKey([delay]) -> retval
其中参数delay是延时的时间,单位是毫秒,默认是0,表示永久等待。该函数在至少创建了一个HighGUI窗口并且该窗口处于活动状态时才有效。如果有多个HighGUI窗口,则其中任何一个都可以处于活动状态。
waitKey函数是一个等待键盘事件的函数,当参数值delay≤0时,等待时间无限长。当delay为正整数 n 时,至少等待 n 毫秒才结束。在等待期间,如果任意按键被按下,则函数结束,返回按键的键值(ASCII码)。如果等待时间结束用户仍未按下按键,则函数返回-1。该函数用在处理HighGUI窗口的程序中,常与显示图像窗口的imshow函数搭配使用。
【例3.11】 等待按键10秒后销毁窗口
import cv2 as cv import numpy as np img=np.zeros((100,200)) cv.imshow("windowname", img); cv.waitKey(0);#按下任意按键,图片显示结束,返回按键键值 cv.imshow("windowname2", img); cv.waitKey(5000);#按下任意按键,图片显示结束,返回按键键值 cv.destroyAllWindows()
第一次显示的窗口,因为waitKey的参数是0,所以如果不去按键,就会一直显示。第二次显示的窗口,因为waitKey的参数是5000,即5s,所以如果5s内不去按键,就会自动返回。最后销毁所有窗口,程序结束。
运行工程,结果如图3-11所示。
总之,waitKey函数是非常简单且常用的函数,开始入门的时候需要掌握好它,开发调试的时候waitKey函数同样是一个好帮手。
图3-11