本文主要是介绍2.11键盘事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
实验原理
实验代码
实验结果
实验原理
简单、常用的键盘事件是等待按键事件,它由 waitKey 函数来实现。无论是刚开始学习 OpenCV,还是使用 OpenCV 进行开发调试,都可以看到waitKey 函数的身影,然而基础的东西往往容易忽略掉,在此可以好好了解一下这个基础又常用的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#include <opencv2\opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{VideoCapture cap("003.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; //键则退出视频播放,并返回键值}return 0;
}
例2
#include <opencv2\opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{VideoCapture cap("003.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;//键则退出视频播放,并返回键值}return 0;
}
实验结果
这篇关于2.11键盘事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!