#include < opencv2/highgui/highgui.hpp >
#include < iostream >
#include < Windows.h >
using namespace cv;
using namespace std;
int main()
{
Mat im;
double duration;
im = imread("D:\\Document\\pictures\\Lena.bmp",0);
// 測試沒有namedWindow時的waitKey執行時間
duration = static_cast<</span>double>(getTickCount());
waitKey(10000);
duration = static_cast<</span>double>(getTickCount())
- duration;
duration /= getTickFrequency();
cout <<"第一個waitKey運行時間爲:" << duration
<< 's' << endl;
namedWindow("Lena");
imshow("Lena",im);
// 測試有namedWindow時的waitKey執行時間
duration = static_cast<</span>double>(getTickCount());
waitKey(10000);
duration = static_cast<</span>double>(getTickCount())
- duration;
duration /= getTickFrequency();
cout <<"第二個waitKey運行時間爲:" << duration
<< 's' << endl;
Sleep(20000);
return 0;
執行結果如下:
從執行結果可以看出,第一個結果並未如期執行,第二個結果如期執行了。這是因爲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,那麼無限等待下去,直到有按鍵按下
另外,在imshow之後如果沒有waitKey語句則不會正常顯示圖像。