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)加與不加都是等價的!