OpenCV waitKey()键盘事件的用法(附带实例)
简单、常用的键盘事件是等待按键事件,它由 waitKey() 函数来实现。
waitKey() 函数延时一定时间,返回按键的值;当参数为 0 时就永久等待,直到用户按键。该函数声明如下:
waitKey() 函数是一个等待键盘事件的函数,当参数值 delay≤0 时,等待时间无限长。当 delay 为正整数 n 时,至少等待 n 毫秒才结束。在等待期间,如果任意按键被按下,则函数结束,返回按键的键值(ASCII 码)。如果等待时间结束用户仍未按下按键,则函数返回 -1。该函数用在处理 HighGUI 窗口的程序中,常与显示图像窗口的 imshow() 函数搭配使用。
比如配合图像显示时的常见用法如下:
实例 1:
实例 2:
视频播放时的常见用法如下:
实例 1:
实例 2:
waitKey() 函数延时一定时间,返回按键的值;当参数为 0 时就永久等待,直到用户按键。该函数声明如下:
int cv::waitKey(int delay = 0) ;其中参数 delay 是延时的时间,单位是毫秒,默认是 0,表示永久等待。该函数在至少创建了一个 HighGUI 窗口并且该窗口处于活动状态时才有效。如果有多个 HighGUI 窗口,则其中任何一个都可以处于活动状态。
waitKey() 函数是一个等待键盘事件的函数,当参数值 delay≤0 时,等待时间无限长。当 delay 为正整数 n 时,至少等待 n 毫秒才结束。在等待期间,如果任意按键被按下,则函数结束,返回按键的键值(ASCII 码)。如果等待时间结束用户仍未按下按键,则函数返回 -1。该函数用在处理 HighGUI 窗口的程序中,常与显示图像窗口的 imshow() 函数搭配使用。
比如配合图像显示时的常见用法如下:
实例 1:
cv::imshow("windowname", image); cv::waitKey(0);// 任意按键被按下,图片显示结束,返回按键的键值
实例 2:
cv::imshow("windowname", image); cv::waitKey(10);// 等待至少10ms图片显示才结束,期间按下任意按键图片显示结束,返回按键的键值
视频播放时的常见用法如下:
实例 1:
VideoCapture cap("video.mp4"); if (!cap.isOpened()) { return -1; } Mat frame; while(true) { cap>>frame; if (frame.empty()) break; imshow("windowname",frame); if(waitKey(30) >=0) // 延时 30ms,以正常的速率播放视频,播放期间按下任意按键则退出视频播放,并返回键值 break; }
实例 2:
VideoCapture cap("video.mp4"); if (!cap.isOpened()) { return -1; } Mat frame; while (true) { cap >>frame; if (frame.empty()) break; imshow("windowname", frame); if (waitKey(30) == 27) // 延时 30ms,以正常的速率播放视频,播放期间按下 Esc 按键则退出视频播放,并返回键值 break; }总而言之,waitKey() 函数是非常简单而且常见的,读者开始入门的时候需要掌握好它,它在开发调试的时候同样是一个好帮手。