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