我正在Windows 7机器上的visual studio上运行OpenCV应用程序。作为最终应用程序的一部分,我需要一个与正在执行的OpenCV应用程序并行运行的计时器。 OpenCV应用程序具有实时视频捕获作为眨眼检测算法的输入。 OpenCV代码必须连续运行,不能暂停或停止。但是,要找到闪烁之间的间隔,我需要在每次闪烁后运行一个计时器。因此,在检测到闪烁时,计时器必须运行。我已经完成了SetTimer和CreateTimerQueueTimer函数,无法清楚地了解如何解决这个问题。有没有其他方法在c ++程序中运行计时器?任何建议和解决方案都将受到高度赞赏。
答案 0 :(得分:0)
为什么需要计时器来计算闪烁之间的间隔?你不能只是存储每次闪烁的当前时间并从之前减去它吗?
答案 1 :(得分: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
。