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;
}

实验结果

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值