本文共 1231 字,大约阅读时间需要 4 分钟。
OpenCV中cvWaitKey函数的使用与窗口机制的关系
在OpenCV开发中,cvWaitKey函数的作用主要与窗口机制相关。具体来说,只有当通过namedWindow创建的窗口存在时,cvWaitKey才会发挥作用。如果在调用cvWaitKey之前没有成功创建窗口,那么该函数等效于未执行。
需要注意的是,窗口的创建有两种方式:第一种是调用namedWindow并立即调用imshow;第二种是直接调用imshow。无论是哪种方式,只要在cvWaitKey之前已经创建了窗口,imshow的显示效果才会正常。如果imshow在cvWaitKey之前没有被调用,则等效于未执行。
cvWaitKey函数的定义为:
int cvWaitKey(int delay=0)
该函数返回值类型为int,参数为int型。函数的行为如下:
需要注意的是,在调用cvWaitKey之前必须确保已经创建了窗口。如果没有窗口创建,cvWaitKey将不会起作用。
以下是一个示例代码:
#include <opencv2/highgui.hpp>#include <opencv2/opencv.hpp>#include
int main() {int c = 0;namedWindow("output", CV_WINDOW_AUTOSIZE);
while (true) { c = waitKey(10000); if (c == 27) { cout << "esc" << endl; break; } cout << c << endl;}return 0; }
在代码中,首先调用namedWindow创建窗口"output",然后进入循环调用cvWaitKey。若按下Esc键(ASCII码27),则输出"esc"并退出循环;否则输出按下的键盘码字。
需要注意的是,在按键处理之前必须先点击namedWindow所在窗口,否则按键事件将无效。
以上代码示例在cv::waitKey(0)后可获取键盘输入。通过检查返回值,可以判断是否有按键按下。特别地,若按下Esc键,可通过(c == 27)判断并执行相应操作。需要注意的是,在OpenCV中,(char)c加或不加与原值无区别,因此无需额外转换。
总之,cvWaitKey函数是OpenCV中处理键盘事件的重要工具,其使用前提是确保已经创建了窗口。正确使用cvWaitKey可以实现键盘事件的响应和处理,丰富OpenCV应用的交互功能。
转载地址:http://clsfk.baihongyu.com/