waitKey仅对窗口机制起作用,即namedWindow产生的窗口。若在此之前没有产生窗口,则waitKey相当于未执行。
注:namedWindow产生的窗口: namedWindow()+imshow() 或者 只有imshow() 都是可以的。此时imshow()在waitKey()之前,否则也是不起作用的。
openv中对cvWaitkey函数的定义如下:
int cvWaitKey( int delay=0 )
返回值为int型,函数的参数为int型,当delay小于等于0的时候,如果没有键盘触发,则一直等待,此时的返回值为-1,否则返回值为键盘按下的码字;当delay大于0时,如果没有键盘的的触发,则等待delay的时间,此时的返回值是-1,否则返回值为键盘按下的码字。
另外,在imshow之后如果没有waitKey语句则不会正常显示图像。
附:
int c=cv::waitKey(0);
if((char)c==27)//27:Esc//>a
break;
if((char)c=='r')//>b
以上>a和>b中(char)加与不加都是等价的!
注意:在按键时首先要点击namedWindow()所在窗口,
否则点击按键无效。
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\opencv.hpp>
#include<iostream>
#include<math.h>
using namespace std;
using namespace cv;
int main()
{int c = 0;namedWindow("output", CV_WINDOW_AUTOSIZE); //没有此句代码,则waitKey不起作用while (true){c = waitKey(10000);if (c == 27) //ESC{cout << "esc" << endl;break;}cout << c << endl;}return 0;
}
参考自https://www.cnblogs.com/ttzm/p/5418791.html