OpenCVのwaitKey()内の異なるパラメータの時間の計算と戻り値


プラットフォーム:
C++:
int cv::waitKey	(int delay = 0)	

Python:
retval	=	cv.waitKey( [,delay])

公式解釈:
delay≦0の場合、関数waitKeyはキーイベント(すなわちキーを押す)を無限に待つか、正数を待つ時間の長い遅延(単位:ミリ秒)を待つ.
注意:
  • オペレーティングシステムの切り替えスレッド間の間隔が最も短いため、この機能は、コンピュータ上で実行されていた他のものに応じて、正確な遅延ミリ秒を待つのではなく、少なくとも遅延ミリ秒を待つことになります.
  • は、Esc = 27のようなキーが押されたコードを返します.
  • は、指定された時間が経過する前にキーが押されていない場合、-1に戻る.
  • は、異なるdelay値の異なる消費時間に注意する必要がある.

  • テストコード
    #include
    #include
    #include 
    
    using namespace cv;
    using namespace std;
    
    int main()
    {
         
    	Mat src = imread("1.jpg");
    	double start, end;
    
    	imshow("car", src);
    	
    	start = clock();
    	int delay = waitKey(1000);		// 1s(1000ms)        -1    1001ms
    	end = clock();
    	cout << "TotalTime = " << (double)((end - start) * 1000 / CLOCKS_PER_SEC) << "ms" << endl;
    	
    	printf("waitKey = %d", delay);
    	return 0;
    }
    

    その他のパラメータ
  • はいずれもボタン操作
  • が必要である.
    int delay = waitKey(-1);	//       ASCII  - TotalTime = 1829ms
    int delay = waitKey(0);		//       ASCII  - TotalTime = 3263ms
    

    結論delay > 0で、所定のdelay 内にキー操作がなければ-1に戻り、そうでなければ対応するASCII に戻る.delay = 0またはdelay < 0の場合、対応するASCII が返されます.