首页 > 其他分享 >OpenCV高级图形用户界面(11)检查是否有键盘事件发生而不阻塞当前线程函数pollKey()的使用

OpenCV高级图形用户界面(11)检查是否有键盘事件发生而不阻塞当前线程函数pollKey()的使用

时间:2024-10-15 12:53:06浏览次数:9  
标签:11 std HighGUI 函数 pollKey include cv 图形用户界面

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

轮询已按下的键。

函数 pollKey 无等待地轮询键盘事件。它返回已按下的键的代码或如果没有键自上次调用以来被按下则返回 -1。若要等待按键被按下,请使用 waitKey

注意
waitKeypollKey 函数是 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;
}

运行结果

在这里插入图片描述

标签:11,std,HighGUI,函数,pollKey,include,cv,图形用户界面
From: https://blog.csdn.net/jndingxin/article/details/142946507

相关文章

  • OpenCV高级图形用户界面(8)在指定的窗口中显示一幅图像函数imshow()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述在指定的窗口中显示一幅图像。函数imshow在指定的窗口中显示一幅图像。如果窗口是以cv::WINDOW_AUTOSIZE标志创建的,图像将以原始大小显示,不过仍然受限于屏幕分辨率。否则,图像......
  • OpenCV高级图形用户界面(9)更改指定窗口的位置函数moveWindow()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述将窗口移动到指定的位置。cv::moveWindow()函数用于更改指定窗口的位置。你可以使用这个函数来移动窗口到屏幕上的任何位置。函数原型voidcv::moveWindow ( constString......
  • 上百种【基于YOLOv8/v10/v11的目标检测系统】目录(python+pyside6界面+系统源码+可训练
    待更新(持续更新),早关注,不迷路...............................................................................目标检测系统操作说明【用户使用指南】(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)基于YOLOv8的车辆行人实时检测系统基于YOLOv10的车辆行人......
  • 2024.10.15 1132版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • jsp电动车停放与充电系统113k1(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,充电桩,充电信息,完成订单开题报告内容一、选题背景与意义随着电动车的普及,其停放与充电问题日益凸显。传统的停放与充电方式存在诸多不便,如停车场地有限......
  • spring boot乡村旅游系统-计算机毕业设计源码61125
     目 录摘 要Abstract1绪论1.1研究背景1.2研究意义1.3论文结构与章节安排2 基于springboot的乡村旅游系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能......
  • win10 win11找回自动登录用户名和密码复选框的方法之一
    设置win1011自动登录用户名和密码的时候会发现有些版本没有登录复选框了,找回自动登录复选框的方法其一是修改注册表的数值即可WIN+R调出运行窗口 在窗口内输入regedit点确定会打开注册表编辑器按如下路径查找HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVe......
  • jsp房屋租售系统的设计与实现ia111
    jsp房屋租售系统的设计与实现本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能用户,房东,中介,房源信息,房屋信息,类型,预约信息,合同信息,预约看房,中介合同开题报告内容一、项目背景随着房地产市......
  • leecode 数据库: 1164. 指定日期的产品价格
    表:Products+---------------+---------+|ColumnName|Type|+---------------+---------+|product_id|int||new_price|int||change_date|date|+---------------+---------+(product_id,change_date)是此表的主键(具有唯一......
  • Windows 11 开发详解:工具与高级用法
    1.引言Windows11是微软最新的操作系统,它不仅带来了全新的用户界面和设计理念,还为开发者提供了强大的开发工具和平台支持。在过去的几年中,开发工具和技术栈发生了巨大的变化,Windows11通过其集成的开发环境、虚拟化技术、容器支持以及跨平台开发工具,为开发者提供了一个更加......