1

我在 Windows 7 机器上的 Visual Studio 上运行 OpenCV 应用程序。作为最终应用程序的一部分,我需要一个与正在执行的 OpenCV 应用程序并行运行的计时器。OpenCV 应用程序具有实时视频捕获作为眨眼检测算法的输入。OpenCV 代码必须连续运行,不能暂停或停止。但是,要找到眨眼之间的间隔,我需要在每次眨眼后运行一个计时器。所以定时器必须在检测到闪烁时运行。我已经完成了 SetTimer 和 CreateTimerQueueTimer 函数,但无法清楚地了解如何去做。有没有其他方法可以在 C++ 程序中运行计时器?任何建议和解决方案将不胜感激。

4

2 回答 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任何其他时间单位。

于 2012-04-25T07:24:10.343 回答