opencv学习之等待按键事件-waitKey函数
文章来源:
https://mangoroom.cn/opencv/opencv-learning-waitKey.html
序
waitKey函数属于opencv函数里既常用又非常基础的函数,无论是刚开始学习opencv,还是使用opencv进行开发调试,都可以看到waitKey函数的身影。然而最基础的东西可能往往容易忽略掉,在此可以好好了解一遍这个基础又常用的waitKey函数。
waitKey函数原型
翻阅opencv的官方文档,可以查阅到该函数的原型为
int cv::waitKey ( int delay = 0 )
Python:
retval = cv.waitKey( [, delay] )
从函数的原型可以了解到该函数以下几点的信息
- waitKey函数属于cv命名空间
- 一个int类型的参数,默认值为0,根据delay的名称可以猜测参数值是一个延时值
- 函数返回值为int类型
以上就是通过函数原型可以解读到的信息了,关于waitKey函数的更多,往下继续了解。
waitKey函数详解
同样地,继续参考权威的opencv官方文档,文档对waitKey函数的解释有
- 1
Waits for a pressed key.
等待一个按键。 可以理解为此函数的功能是等待一个按键按下。
- 2
The function waitKey waits for a key event infinitely (when delay≤0 ) or for delay milliseconds, when it is positive. Since the OS has a minimum time between switching threads, the function will not wait exactly delay ms, it will wait at least delay ms, depending on what else is running on your computer at that time. It returns the code of the pressed key or -1 if no key was pressed before the specified time had elapsed.
以上芒果理解为:
函数 Waitkey 在参数delay为正整数n时,延迟n毫秒,或者无限等待按键事件 (delay≤0时) 。由于操作系统在切换线程之间需要时间, 该函数不会等待完全延迟n ms, 它将等待至少延迟n ms, 这具体取决于当时计算机上运行的其他时间。如果在指定的时间之内没有按下键, 则返回按下的键或-1 的ascii码。函数的返回值是键盘按键键值的ascii码。
- 3
This function is the only method in HighGUI that can fetch and handle events, so it needs to be called periodically for normal event processing unless HighGUI is used within an environment that takes care of event processing.
此函数是 HighGUI 中唯一可以提取和处理事件的方法, 因此需要定期调用它进行正常的事件处理, 除非在处理事件处理的环境中使用 HighGUI。
- 4
The function only works if there is at least one HighGUI window created and the window is active. If there are several HighGUI windows, any of them can be active.
该函数仅在至少创建了一个 HighGUI 窗口并且该窗口处于活动状态时才有效。如果有多个 HighGUI 窗口, 则其中任何一个都可以处于活动状态。
- 5
delay Delay in milliseconds. 0 is the special value that means "forever".
延迟延迟以毫秒为单位。0是表示 "永远" 的特殊值。即参数值为0时,waitKey函数等待的时间是无限长。
通过以上对官方文档的学习,对waitKey的认识可以归为:waitKey函数是一个等待键盘事件的函数,参数值delay<=0时等待时间无限长,delay为正整数n时至少等待n毫秒的时间才结束。在等待的期间按下任意按键时函数结束,返回按键的键值(ascii码),等待时间结束仍未按下按键则返回-1。该函数用在处理HighGUI窗口程序,最常见的便是与显示图像窗口imshow函数搭配使用
waitKey函数用法
waitKey函数非常基础以及常用,以下是常见的一些用法
- 1
cv::imshow("windowname", image);
cv::waitKey(0);//任意按键按下,图片显示结束,返回按键键值
- 2
cv::imshow("windowname", image);
cv::waitKey(10);//等待至少10ms图片显示才结束,期间按下任意键图片显示结束,返回按键键值
- 3
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;
}
- 4
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函数是非常简单而且常见的,开始入门的时候需要掌握好它,开发调试的时候waitKey函数同样是一个好帮手。
本文由芒果浩明发布,转载需注明来源。
本文链接:https://mangoroom.cn/opencv/opencv-learning-waitKey.html
opencv学习之等待按键事件-waitKey函数的更多相关文章
- PowerBuilder学习笔记之调用事件和函数
2.7.1调用事件和函数 完整语法:[ObjectName]ancestorclass::[type][when]name([argumnetlist]) 说明:ObjectName:指定函数或事件的 ...
- OpenCV学习笔记(15)——更多的轮廓函数
凸缺陷,以及如何找到凸缺陷 找某一点到一个多边形的最短距离 不同形状的匹配 1.凸缺陷 前面已经设计了轮廓的凸包和凸性缺陷的概念.OpenCV中有一个函数cv2.convexityDefect()可以 ...
- OpenCV学习 5:关于平滑滤波器 cvSmooth()函数
原创文章,欢迎转载,转载请注明出处 本节主要了解下cvSmooth函数的一些参数对结果的影响.从opencv tutorial中可以看到这样一段话: 像我这样的数学渣,还是看下图来得形象: 高斯滤波器 ...
- OpenCV学习代码记录——人脸检测
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...
- OpenCV学习代码记录——canny边缘检测
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...
- OpenCV学习代码记录——轮廓(contour)检测
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...
- OpenCV学习:实现简单的图像叠加
本实例使用简单的线性叠加方法来实现两幅图像的叠加,主要使用的知识如下: 1)线性融合 2)addWeighted函数 //! computes weighted sum of two arrays ( ...
- OpenCV 学习笔记 02 处理文件、摄像头和图形用户界面
在处理文件前需要引入OpenCV库,同时也引入unmpy库 import cv2 import numpy as np 1 基本的读写操作 1.1 图像文件的读写操作 1.1.1 图像文件的读取操作 ...
- OpenCV学习:改变图像的对比度和亮度
本实例演示简单地改变图像的对比度和亮度,使用了如下线性变换来实现像素值的遍历操作: The parameters α > 0 and β often called the gain and bi ...
随机推荐
- maven项目创建4
运行maven项目,首先要不最根项目添加到maven本地仓库,执行 项目-->右键-->Run as-->Maven install 注:创建war包项目,本地测试,创建index ...
- [JZOJ6244]【NOI2019模拟2019.7.1】islands【计数】【图论】
Description n<=1e9,M,K<=100 Solution 显然任选m个港口的答案是一样的,乘个组合数即可. 考虑枚举m个港口的度数之和D 可以DP计算 记\(F_{m,D} ...
- Springboot 使用JPA
Springboot 使用jpa maven依赖 <dependency> <groupId>org.springframework.boot</groupId> ...
- HDU 6155 Subsequence Count (DP、线性代数、线段树)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6155 题解 DP+线代好题.(考场上过多时间刚前两题,没怎么想这题--) 首先列出一个DP式: 设\( ...
- HDU 4738--Caocao's Bridges(重边无向图求桥)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Oracle根据列中的特殊符号进行分组
原数据: 目标结果: 根据-符号将数据进行分组,思路是根据NAME列值进行复制,若为‘-’则赋值1,其他为0,这样就可以根据累加实现分组, 具体实现代码: /* Formatted on 2019/9 ...
- Unity3D_(游戏)甜品消消乐01_游戏基础界面
甜品消消乐游戏 (脚本源码在游戏UI设计最下方) 三消游戏,存在L型消除有一点小Bug,当甜品在饼干附近消除时会清除饼干 饼干作为游戏障碍物时不可移动的,多块饼干并排时会挡住甜品掉落 发现消除类游戏的 ...
- 微信小程序_(组件)picker
picker组件效果 官方文档:传送门 Page({ data: { array: ['美国', '中国', '巴西', '日本'], objectArray: [ { id: 0, name: '美 ...
- maven 配置国内镜像仓库加速获取jar包的配置方法
在 maven 的 conf/settings.xml 中配置 <mirrors> <!-- mirror | Specifies a repository mirror site ...
- 第九周学习总结&实验报告七
实验报告: 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验 ...