2012-04-25 13 views
1

私はWindows 7マシンのVisual Studio上でOpenCVアプリケーションを実行しています。最終的なアプリケーションの一部として、実行中のOpenCVアプリケーションと並行して実行されるタイマーが必要です。 OpenCVアプリケーションは、アイブリンク検出アルゴリズムへの入力としてリアルタイムビデオキャプチャを有する。 OpenCVコードは継続的に実行されていなければならず、一時停止または停止することはできません。しかし、瞬きの間隔を見つけるために、私はそれぞれの瞬きの後にタイマーを走らせる必要があります。したがって、点滅が検出されている間はタイマーを実行する必要があります。私はSetTimer関数とCreateTimerQueueTimer関数を使いこなし、これについてどうやって行くのかをはっきりと理解できませんでした。 C++プログラムでタイマーを実行する他の方法はありますか?どんな提案や解決策も高く評価されます。実行中のプログラムと平行に、cppでタイマーを実行する

答えて

0

なぜ点滅間隔を計算するためにタイマーが必要ですか?現在の時刻を瞬きごとに保存し、それを前の時刻から減算することはできませんか?あなたは、単純なタイマーにするためにstd::chronoを使用することができますc++11

+0

1回目の点滅後にタイマーを始めると、次の点滅がタイマーが切れる前に発生するかどうかに基づいて決定したいと思います。タイマーが切れた後に次の点滅が起こると、 dは点滅カウントを再起動し、タイマーをリセットする必要があります。これでわかりやすくわかりやすくなりましたか。 – chandru

0

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

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

ああと1:他の回答にコメントに反応して

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(); 

編集し、次の操作を行うことができ言及しなければならないのは、nanosecondsを他の時間単位に置き換えることができるということです。

+0

ありがとう。私はこれを調べます。私は自分の問題の複雑さを理解しようとしています。 – chandru

+0

@chandru私の編集を参照 – inf

関連する問題