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;
}

运行结果

相关推荐
ZhengEnCi1 小时前
09bad-斯坦福CS336作业一-构建优化器
人工智能
ZhengEnCi2 小时前
09bac-斯坦福CS336作业一-实现训练损失计算
人工智能
冬奇Lab2 小时前
Skill 系列(01):Skill 评测体系——如何量化一个 AI Skill 的质量
人工智能
兵慌码乱4 小时前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
IT_陈寒5 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
用户3521802454757 小时前
🎆从 Prompt 到 Skill:让 Spring AI Agent 学会"装新技能"
人工智能·spring boot·ai编程
米小虾7 小时前
手把手教你搭建第一个生产级AI Agent:从选型到实战的完整指南
人工智能·agent
任沫7 小时前
Agent之Function Call
javascript·人工智能·go
米小虾8 小时前
2026年AI Agent全面爆发:从开源生态到企业级应用的进化之路
人工智能·agent
用户6919026813398 小时前
Vibe Coding 开发项目的基本范式
人工智能·设计模式·代码规范