1

Windows 7 マシンのビジュアル スタジオで OpenCV アプリケーションを実行しています。最終アプリケーションの一部として、実行中の OpenCV アプリケーションと並行して実行されるタイマーが必要です。OpenCV アプリケーションには、まばたき検出アルゴリズムへの入力として、リアルタイムのビデオ キャプチャがあります。OpenCV コードは継続的に実行されている必要があり、一時停止または停止することはできません。ただし、まばたきの間隔を見つけるには、各まばたきの後にタイマーを実行する必要があります。そのため、まばたきが検出されている間、タイマーを実行する必要があります。SetTimer および CreateTimerQueueTimer 関数を実行しましたが、これについての明確な理解を得ることができませんでした。C++ プログラムでタイマーを実行する他の方法はありますか? どんな提案や解決策も高く評価されます。

4

2 に答える 2

1

まばたきの間隔を計算するためにタイマーが必要なのはなぜですか? まばたきごとに現在の時刻を保存して、前の時刻から差し引くことはできませんか?

于 2012-04-25T07:24:07.063 に答える
0

簡単なタイマーを作成するために使用c++11できます。std::chrono

  auto start = std::chrono::high_resolution_clock::now();
  // do processing here
  auto end = std::chrono::high_resolution_clock::now();
  std::cout << "time was " << 
    std::chrono::duration_cast<std::chrono::nanoseconds>(end - start).count();

他の回答のコメントに応じて編集すると、次のことができます。

...
auto take = (end - start);

if(take > std::chrono::nanoseconds(x)) {
  // ... do whatever you want here
}

nanosecondsああ、言及すべきことの1つは、を他の時間単位に置き換えることができるということです。

于 2012-04-25T07:24:10.343 に答える