- 操作系统: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;
}