在cpp中运行计时器,与正在执行的程序并行运行

时间:2012-04-25 07:17:02

标签: c++ opencv timer

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

2 个答案:

答案 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