OpenCV高级图形用户界面(11)检查是否有键盘事件发生而不阻塞当前线程函数pollKey()的使用
- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
轮询已按下的键。
函数 pollKey 无等待地轮询键盘事件。它返回已按下的键的代码或如果没有键自上次调用以来被按下则返回 -1。若要等待按键被按下,请使用 waitKey。
注意
waitKey 和 pollKey 函数是 HighGUI 中唯一能够获取和处理 GUI 事件的方法,因此需要定期调用其中一个来进行正常的事件处理,除非 HighGUI 在一个处理事件的环境中使用。
该函数仅在至少创建了一个 HighGUI 窗口并且该窗口处于活动状态时才工作。如果有多个 HighGUI 窗口,其中任何一个都可以是活动的。
函数原型
int cv::pollKey ()
参数
此函数不接受参数
返回值
- 如果有键盘事件发生,则返回 ASCII 码对应的按键值。
- 如果没有键盘事件,则返回 -1。
代码示例
include <chrono>
#include <iostream>
#include <opencv2/opencv.hpp>
#include <thread>int main()
{// 创建窗口std::string winname = "Example Window";cv::namedWindow( winname, cv::WINDOW_NORMAL );// 显示一个空图像cv::Mat img( 480, 640, CV_8UC3, cv::Scalar( 255, 255, 255 ) );cv::imshow( winname, img );// 检查键盘输入while ( true ){// 使用 pollKey 检查是否有键盘输入int key = cv::pollKey();if ( key >= 0 ){// 如果有键盘输入,则打印按键的 ASCII 码std::cout << "Key pressed: " << key << std::endl;if ( key == 27 ){ // 按下 ESC 键退出break;}}// 等待一小段时间,防止 CPU 占用过高std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) );}// 关闭所有窗口cv::destroyAllWindows();return 0;
}
运行结果

相关文章:
OpenCV高级图形用户界面(11)检查是否有键盘事件发生而不阻塞当前线程函数pollKey()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 轮询已按下的键。 函数 pollKey 无等待地轮询键盘事件。它返回已按下的键的代码或如果没有键自上次调用以来被按下则返回 -1。若要等待按键被按…...
nvm安装,node多版本管理
卸载nodejs win R 输入 appwiz.cpl 删除 node.js查看node.js安装路径是否有残留,有就删除文件夹 删除下列路径文件,一定要检查,没删干净,nvm安装会失败 C:\Program Files (x86)\NodejsC:\Program Files\NodejsC:\Users{User}\…...
ThingsBoard规则链节点:Assign To Customer节点详解
引言 分配给客户节点概述 用法 含义 应用场景 实际项目运用示例 结论 引言 在物联网(IoT)解决方案中,ThingsBoard平台以其高效的数据处理能力和灵活的设备管理功能而著称。其中,规则引擎是该平台的一个核心组件,…...
自监督行为识别-时空线索解耦(论文复现)
自监督行为识别-时空线索解耦(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 自监督行为识别-时空线索解耦(论文复现)引言论文概述核心创新点双向解耦编码器跨域对比损失的构建结构化数据增强项目部署准备工作数据…...
MyBatisPlus:自定义SQL
由于SQL不能写在业务层,所以可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分 ①基于Wrapper 构建Where条件 Testpublic void test7(){//需求:将id满足ids的数据项的balance字段减200int amount200;List…...
变电站谐波治理设备有哪些
在变电站中,由于非线性负载(如电力电子设备、变频器等)会引入谐波,对电网造成干扰,因此需要进行谐波治理。以下是常见的变电站谐波治理设备及其特点: 1、静止无功发生器(SVG) 工作原…...
Mybatis全局配置介绍
【mybatis全局配置介绍】 mybatis-config.xml,是MyBatis的全局配置文件,包含全局配置信息,如数据库连接参数、插件等。整个框架中只需要一个即可。 1、mybatis全局配置文件是mybatis框架的核心配置,整个框架只需一个;…...
error: cannot find symbol import android.os.SystemProperties;
背景:AS独立编译系统工程应用,使用了hide接口,导致编译不过。 尽管使用了framework.jar依赖。依然编译不过,导致各种类找不到。 例如: /SettingsLib/src/main/java/com/android/settingslib/location/RecentLocatio…...
债券市场金融基础设施 (2020版)
前言:我国债券市场格局简介 我国金融市场主要包括货币市场、资本市场、外汇市场、金融衍生工具市场等,其中,资本市场是金融市场重要组成部分,承担着实体经济直接融资的重责,做大做强资本市场对整个国民经济具有重要意义。债券市场是资本市场两大组成部分之一,对提高直接…...
OpenCV高级图形用户界面(8)在指定的窗口中显示一幅图像函数imshow()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在指定的窗口中显示一幅图像。 函数 imshow 在指定的窗口中显示一幅图像。如果窗口是以 cv::WINDOW_AUTOSIZE 标志创建的,图像将以原…...
for循环和while循环的区别
for循环和while循环的主要区别在于使用场景和结构。for循环适合已知循环次数的情况,而while循环则更灵活,适用于条件动态变化的情况。 for循环的特点 1. 已知迭代次数:for循环在开始前就需要知道具体的迭代次数。例如,遍历一个列…...
机器学习和神经网络的研究与传统物理学的关系
机器学习和神经网络的研究与传统物理学的关系 机器学习和神经网络是现代科学研究中非常热门的领域,它们与传统物理学在某些方面有着密切的关系,在人类科学研究中相互影响和促进作用也越来越显著。 首先,机器学习和神经网络在物理学研究中具…...
LabVIEW提高开发效率技巧----事件触发模式
事件触发模式在LabVIEW开发中是一种常见且有效的编程方法,适用于需要动态响应外部或内部信号的场景。通过事件结构(Event Structure)和用户自定义事件(User Events),开发者可以设计出高效的事件驱动程序&am…...
Kimi AI助手重大更新:语音通话功能闪亮登场!
Kimi人工智能助手近日发布了一项令人瞩目的重大更新,其中最引人注目的是新增的语音通话功能。这一创新不仅拓展了用户与AI互动的方式,还为学习和工作场景提供了突破性的解决方案。 Ai 智能办公利器 - Ai-321.com 人工智能 - Ai工具集 - 全球热门人工智能…...
Linux——进程管理
目录 进程基础 ps 显示系统执行的进程 终止进程 kill 和 killall pstree 查看进程树 服务(service)管理 service 管理指令 服务的运行级别(runlevel) chkconfig 设置服务在不同运行级别下是否开启自启动 systemctl 管理…...
【ARM 嵌入式 编译系列 2.9 -- GCC 编译如何避免赋值判断 if ( x = 0)】
> ARM GCC 编译精讲系列课程链接 < 文章目录 GCC 编译避免赋值判断参数说明示例编译命令解决方法 GCC 编译避免赋值判断 在 GCC 编译中,为了避免误将赋值操作用于条件判断(例如 if (break_var 0x0))导致的错误,可以使用 -…...
PyTorch搭建GNN(GCN、GraphSAGE和GAT)实现多节点、单节点内多变量输入多变量输出时空预测
目录 I. 前言II. 数据集说明III. 模型3.1 GCN3.2 GraphSAGE3.3 GAT IV. 训练与测试V. 实验结果 I. 前言 前面已经写了很多关于时间序列预测的文章: 深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)PyTorch搭建LSTM实现时间序列…...
51单片机快速入门之数码管的拓展应用2024/10/15
51单片机快速入门之数码管的拓展应用 在前面的文章中,我们已经了解到数码管的基础应用,今天来讲讲拓展应用 我们知道单个数码管分为以下 但是当我们碰到 如下这种数码管的时候又应该如何去控制呢? 这里就不得不说其拓展应用之-----------扫描显示 扫描显示: 扫描显示,又称…...
vue 音频播放控件封装
<template> <div> <audio @timeupdate="updateProgress" controls ref="audioRef" style="display: none" > <source :src="audioUrl" type="audio/mpeg" /> 您的浏览器不支持音频播放 </audio&…...
秋招面试题记录
嵌入式软件开发 网上搜集的题目 1.Static关键词的作用? static 关键字有三个主要作用: 局部变量:在函数内部,static 局部变量只初始化一次,且在函数调用结束后仍然保留其值。全局变量/函数:在文件内部&a…...
pykg2vec功能mastery:知识图谱嵌入模型的高级配置与优化
pykg2vec功能mastery:知识图谱嵌入模型的高级配置与优化 【免费下载链接】pykg2vec 项目地址: https://gitcode.com/gh_mirrors/py/pykg2vec 问题导入 知识图谱嵌入模型训练中,开发者常面临三大痛点:模型参数调优耗时且效果不佳、不…...
利用快马平台AI能力,十分钟搭建你的Copilot式代码生成原型
今天想和大家分享一个快速验证AI编程助手(Copilot类工具)原型的实践。作为一个经常需要快速验证想法的开发者,我发现用InsCode(快马)平台可以省去很多搭建环境的时间,特别适合做这种概念验证。 明确核心需求 Copilot的核心能力其实…...
XML Notepad:免费高效的XML编辑器终极指南
XML Notepad:免费高效的XML编辑器终极指南 【免费下载链接】XmlNotepad XML Notepad provides a simple intuitive User Interface for browsing and editing XML documents. 项目地址: https://gitcode.com/gh_mirrors/xm/XmlNotepad XML Notepad是一款由微…...
C++的std--ranges算法自定义比较器与等价关系在集合操作中的运用
C20引入的std::ranges库为算法操作带来了革命性改进,其中自定义比较器与等价关系的灵活运用,显著提升了集合操作的表达能力。通过精确控制元素间的比较逻辑,开发者能够实现更复杂的业务需求,例如处理自定义对象集合或实现非标准排…...
YOLOv8目标检测新玩法:用VMamba替换C2f模块,我在DDSM医疗数据集上mAP涨到了0.724
YOLOv8与VMamba融合:医疗影像目标检测的突破实践 在医疗影像分析领域,目标检测技术正经历着从传统卷积神经网络到新型架构的转变。最近,我们将YOLOv8模型中的C2f模块替换为VMamba模块,在DDSM乳腺X光数据集上取得了mAP 0.724的显著…...
Win32下用libigl+GLFW3渲染3D模型的完整配置指南(附常见错误排查)
Win32下用libiglGLFW3渲染3D模型的完整配置指南(附常见错误排查) 在Windows平台进行3D图形开发时,libigl与GLFW3的组合为开发者提供了强大的工具集。libigl作为一个轻量级的C几何处理库,与GLFW3这一跨平台的OpenGL窗口管理库结合…...
从SWF中提取加密通信协议:JPEXS Free Flash Decompiler安全分析报告
从SWF中提取加密通信协议:JPEXS Free Flash Decompiler安全分析报告 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler 在网络安全分析领域,SWF(Shockwa…...
比迪丽AI绘画创意开发:使用Matlab进行生成效果分析
比迪丽AI绘画创意开发:使用Matlab进行生成效果分析 1. 引言 在AI绘画创作领域,比迪丽模型因其出色的角色生成能力而备受关注。但如何科学评估生成效果、量化分析风格特征,一直是创作者面临的挑战。传统的人工评估方式主观性强、效率低下&am…...
语义分割竞赛必备:5种Loss函数组合效果对比(含Dice+Focal Loss调参指南)
语义分割竞赛进阶:5种损失函数组合实战评测与调参策略 在Kaggle等数据竞赛中,语义分割任务的性能提升往往取决于损失函数的巧妙选择与组合。不同于常规分类任务,多类别像素级预测需要处理极端类别不平衡、边界模糊等独特挑战。本文将深入剖析…...
手把手教你为i.MX6ULL开发板适配非标准分辨率LCD(以1024x600 OV5640为例)
i.MX6ULL开发板非标准分辨率LCD适配实战:从寄存器配置到图像稳定输出 在嵌入式视觉系统开发中,摄像头与显示设备的适配往往成为项目落地的关键瓶颈。当面对非标准分辨率的LCD屏幕时,开发者需要深入理解图像采集与显示的全链路原理,…...
