#include <opencv2/opencv.hpp>
#include < iostream >
#include <window.h>
using namespace cv;
using namespace std;int main()
{Mat im;double duration;im = imread("1.jpg");// 測試沒有namedWindow時的waitKey執行時間duration = static_cast<double>(getTickCount());waitKey(10000);duration = static_cast<double>(getTickCount())- duration;duration /= getTickFrequency();cout <<"第一個waitKey運行時間為:" << duration<< 's' << endl;namedWindow("Lena");imshow("Lena",im);// 測試有namedWindow時的waitKey執行時間duration = static_cast<double>(getTickCount());waitKey(10000);duration = static_cast<double>(getTickCount())- duration;duration /= getTickFrequency();cout <<"第二個waitKey運行時間為:" << duration<< 's' << endl;return 0;
}
結果:
第一個waitKey運行時間為:3.56973e-006s
第二個waitKey運行時間為:10.0054s
請按任意鍵繼續. . .
從執行結果可以看出,第一個結果并未如期執行,第二個結果如期執行了。這是因為waitKey僅對窗口機制起作用,即namedWindow產生的窗口。若在此之前沒有產生窗口,則waitKey相當于未執行。
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,那么無限等待下去,直到有按鍵按下
如果程序想響應某個按鍵,可利用if(cvWaitKey(1)==Keyvalue);
經常程序里面出現if( cvWaitKey(10) >= 0 ) 是說10ms中按任意鍵進入此if塊。
注意:這個函數是HighGUI中唯一能夠獲取和操作事件的函數,所以在一般的事件處理中,它需要周期地被調用,除非HighGUI被用在某些能夠處理事件的環境中。比如在MFC環境下,這個函數不起作用。