openCV中waitKey函数介绍

#include <opencv2/opencv.hpp>
#include < iostream >
#include <window.h>
using namespace cv;
using namespace std;


int main()
{
	Mat im;
	double duration;
	im = imread("1.jpg");
	// 测试没有namedWindow时的waitKey执行时间
	duration = static_cast<double>(getTickCount());
	waitKey(10000);
	duration = static_cast<double>(getTickCount())
		- duration;
	duration /= getTickFrequency();
	cout <<"第一个waitKey运行时间为:" << duration
		<< 's' << endl;


	namedWindow("Lena");
	imshow("Lena",im);
	
	// 测试有namedWindow时的waitKey执行时间
	duration = static_cast<double>(getTickCount());
	waitKey(10000);
	duration = static_cast<double>(getTickCount())
		- duration;
	duration /= getTickFrequency();
	cout <<"第二个waitKey运行时间为:" << duration
		<< 's' << endl;
	return 0;
}


结果:
第一个waitKey运行时间为:3.56973e-006s
第二个waitKey运行时间为:10.0054s
请按任意键继续. . .
从执行结果可以看出,第一个结果并未如期执行,第二个结果如期执行了。这是因为waitKey仅对窗口机制起作用,即namedWindow产生的窗口。若在此之前没有产生窗口,则waitKey相当于未执行。


waitKey有两个作用:
1. It waits for x milliseconds for a key press. If a key was pressed during that time, it returns the key's ASCII code. Otherwise, it returns -1.
2It handles any windowing events, such as creating windows with cv::namedWindow(), or showing images with cv::imshow().


格式:
waitKey(x);
第一个参数: 等待x ms,如果在此期间有按键按下,则立即结束并返回按下按键的
ASCII码,否则返回-1
如果x=0,那么无限等待下去,直到有按键按下


如果程序想响应某个按键,可利用if(cvWaitKey(1)==Keyvalue);
经常程序里面出现if( cvWaitKey(10) >= 0 ) 是说10ms中按任意键进入此if块。
注意:这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中。比如在MFC环境下,这个函数不起作用。















  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值