2012-04-25 4 views
1

Windows 7 시스템의 Visual Studio에서 OpenCV 응용 프로그램을 실행하고 있습니다. 최종 응용 프로그램의 일부로 실행중인 OpenCV 응용 프로그램과 병렬로 실행되는 타이머가 필요합니다. OpenCV 응용 프로그램은 눈 깜박임 탐지 알고리즘에 대한 입력으로 실시간 비디오 캡처를 가지고 있습니다. OpenCV 코드는 지속적으로 실행되어야하며 일시 중지하거나 중지 할 수 없습니다. 그러나 깜박 사이 간격을 찾으려면 각 깜박임 후 타이머를 실행해야합니다. 그래서 깜박이는 동안 타이머가 작동해야합니다. SetTimer 및 CreateTimerQueueTimer 함수를 사용하여이 문제를 해결하는 방법에 대한 명확한 이해를 얻지 못했습니다. C++ 프로그램에서 타이머를 실행하는 다른 방법이 있습니까? 모든 제안 및 솔루션을 높이 평가 될 것입니다.실행중인 프로그램과 병렬 인 cpp에서 타이머 실행

답변

0

깜박임 간격을 계산하는 데 타이머가 필요한 이유는 무엇입니까? 그냥 깜박일 때마다 현재 시간을 저장하고 이전 시간에서 뺍니다. c++11

+0

첫 번째 깜박임 후 타이머를 시작한다고 가정 해보십시오. 다음 번 깜박임이 타이머가 다 떨어지기 전에 발생하는지 여부에 따라 결정하고 싶습니다. 다음 깜박임이 타이머가 다 떨어지면 발생합니다. 깜박임 횟수를 다시 시작하고 타이머를 재설정해야합니다. 이것이 내 문제를 더 명확하게 이해할 수 있는지 확실하지 않습니다. – chandru

0

간단한 타이머 만들기 위해 std::chrono를 사용할 수 있습니다

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

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

아, 그리고 하나를 다른 대답에 코멘트에 응답

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