OS X上的OpenCV'cvQueryFrame'非阻塞?

时间:2010-10-31 12:32:45

标签: c opencv webcam video-capture blocking

当我在Windows上执行cvQueryFrame时,API会阻塞,直到图像传递完毕。在Mac OS X上,我的CPU利用率为100%,而只查询图像并在窗口中显示。我是最新的SVN版本。谁能证实我的经历?难道我做错了什么?有解决办法吗?

我的循环代码如下所示:

while(key != 'q') {
    if (frame)
        cvShowImage("Live Cam", frame);
    frame = NULL;
    frame = cvQueryFrame(capture);
    key = cvWaitKey(10);
}

1 个答案:

答案 0 :(得分:1)

根据 Activity Monitor ,我刚刚执行了一个演示应用程序I presented here,它使用了~22%的CPU。我使用OpenCV 2.1( 32位)在Macbook Pro 13“上运行该程序。

如果你注意那段代码,你会发现循环与你的循环有点不同:

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

  cvShowImage("Live Cam", frame );
  key = cvWaitKey(10);
}