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

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

算法描述

轮询已按下的键。

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

注意
waitKeypollKey 函数是 HighGUI 中唯一能够获取和处理 GUI 事件的方法,因此需要定期调用其中一个来进行正常的事件处理,除非 HighGUI 在一个处理事件的环境中使用。

该函数仅在至少创建了一个 HighGUI 窗口并且该窗口处于活动状态时才工作。如果有多个 HighGUI 窗口,其中任何一个都可以是活动的。

函数原型

cpp 复制代码
int cv::pollKey	()	

参数

此函数不接受参数

返回值

  • 如果有键盘事件发生,则返回 ASCII 码对应的按键值。
  • 如果没有键盘事件,则返回 -1。

代码示例

cpp 复制代码
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;
}

运行结果

相关推荐
python机器学习建模1 小时前
22篇经典金融风控论文复现(2025年11月更新)
人工智能·机器学习·论文·期刊·金融风控
Codebee1 小时前
深度解析AI编程技术:从原理到实践,手把手教你落地
人工智能·设计模式·开源
武汉唯众智创1 小时前
基于五级工的人工智能训练师教学解决方案
人工智能·ai·产教融合·人工智能训练师·五级工·ai训练师
执笔论英雄1 小时前
【RL】python协程
java·网络·人工智能·python·设计模式
你好~每一天2 小时前
未来3年,最值得拿下的5个AI证书!
数据结构·人工智能·算法·sqlite·hbase·散列表·模拟退火算法
老前端的功夫2 小时前
前端技术选型的理性之道:构建可量化的ROI评估模型
前端·javascript·人工智能·ubuntu·前端框架
Mxsoft6192 小时前
我发现区块链数据同步延迟,某次故障溯源卡顿,动态调整共识机制救场!
人工智能
m0_488913012 小时前
小白也能懂!RAG技术让AI告别知识滞后,收藏学习
人工智能·学习·langchain·大模型·ai大模型·rag·大模型学习
帮帮志2 小时前
【AI大模型对话】流式输出和非流式输出的定义和区别
开发语言·人工智能·python·大模型·anaconda
陈奕昆2 小时前
n8n实战营Day1课时2:核心概念拆解+天气提醒工作流实操
开发语言·人工智能·n8n