c - 带视频的opencv圆检测

标签 c opencv detection video-processing geometry

有没有办法等到某些事情发生(while 循环)或等待 10 秒后再进行圆圈检测,但仍显示视频。我已经用 while 循环试过了,但如果不满足条件,帧将不会显示,因为代码没有得到 cvShow\iamge()。

最佳答案

是的,这是可能的,但您必须使用线程。声明一个全局变量 bool exec_circle_detection = false; 并启动第二个线程。在此线程上,调用 sleep(10) 等待 10 秒,然后将 exec_circle_detection 更改为 true

在主线程中,在帧抓取循环内,检查 bool 变量是否设置为 true,如果不是,则不会处理帧。这部分看起来像这样(在 C 中):

char key = 0;
while (key != 27) // ESC
{    
  frame = cvQueryFrame(capture);
  if (!frame) 
  {
      fprintf( stderr, "!!! cvQueryFrame failed!\n" );
      break;
  }

  if (exec_circle_detection)
  {
      // execute custom processing
  }

  // Display processed frame
  cvShowImage("result", frame);

  // Exit when user press ESC
  key = cvWaitKey(10);
}

如果您计划每 10 秒进行一次圆检测,则需要在执行自定义处理后将 exec_circle_detection 更改为 false。在辅助线程上,调整您的代码,使 while 循环每 10 秒将 exec_circle_detection 更改为 true。

关于c - 带视频的opencv圆检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9480240/

相关文章:

python - 如何在 tensorflow 中使用.meta和检查点文件进行预测?

C 方程返回的值与我的计算值不同

C-如何将文本文件中的单词读入字符串数组

java - 在 OpenCV 中调整视频源的大小

c++ - 为什么 BorderType 选项在 OpenCV MedianBlur 中不存在?

Python openCV 使用零均值和单位方差进行归一化

java - 邮件地址验证JAVA

c - 外部链接内联函数真的是内联的吗?

c - 如何在 Ubuntu 中正确使用 AES_CBC_Encrypt 128 openssl?

ios - 如何检测 SKSpriteNode 是否在 SKShapeNode 中