waitKey仅对窗口机制起作用,即namedWindow产生的窗口。若在此之前没有产生窗口,则waitKey相当于未执行。

注:namedWindow产生的窗口: namedWindow()+imshow()    或者   只有imshow() 都是可以的。

/***********************************************************************************/

openv中对cvWaitkey函数的定义如下:

int cvWaitKey( int delay=0 )

返回值为int型,函数的参数为int型,当delay小于等于0的时候,如果没有键盘触发,则一直等待,此时的返回值为-1,否则返回值为键盘按下的码字;当delay大于0时,如果没有键盘的的触发,则等待delay的时间,此时的返回值是-1,否则返回值为键盘按下的码字。

测试代码如下:

#include<stdio.h>
#include<cv.h>
#include<highgui.h>
int main()
{ IplImage *src=cvLoadImage("car.jpg",-1);
 cvShowImage("car",src);
 int t=cvWaitKey(-1);
 printf("cvWaitKey return: %d",t);
 return 0;
}

/*************************************************************************************/

waitKey有两个作用:

1. It waits for x milliseconds for a key press. If a key was pressed during that time, it returns the key's ASCII code. Otherwise, it returns -1.

2It handles any windowing events, such as creating windows with cv::namedWindow(), or showing images with cv::imshow().

格式:

waitKey(x);

第一个参数: 等待x ms,如果在此期间有按键按下,则立即结束并返回按下按键的

ASCII码,否则返回-1

如果x=0,那么无限等待下去,直到有按键按下

另外,在imshow之后如果没有waitKey语句则不会正常显示图像。

附:

int c=cv::waitKey(0);
if((char)c==27)//27:Esc//>a
break;
if((char)c=='r')//>b

以上>a和>b中(char)加与不加都是等价的!

05-13 05:19