0

使用视频采集卡、opencv 采集视频

上面的问题几乎问我想要什么。我有一个带有 USB 2.0 接口的 elgato(elgato video capture http://www.elgato.com/video/video-capture )图像采集卡。我正在尝试使用 opencv 从 elgato 图像采集卡中抓取帧。如下所示,帧抓取发生在 while 循环内。

grabSuccess        = ( cvGrabFrame (captureDev[0]) == 1 );
frameGrabbed       = (grabSuccess ? cvRetrieveFrame (captureDev[0]) : NULL);    
while (1)
{

    grabSuccess  = ( cvGrabFrame (captureDev[0]) == 1);
    frameGrabbed = (grabSuccess ? cvRetrieveFrame (captureDev[0]) : NULL);
      .
      .
      .
      //some processing
      .
      .
      .
      //show image here
}

当我在循环之前设置一个断点并在调试器在断点处停止后继续执行时。一切正常(视频帧显示在 cvWindow 中)。但是没有断点中断,我看到一个空白的灰色窗口。

任何帮助,将不胜感激。

P:S:我正在使用带有opencv 2.3.1的windows 8中的visual studio 2012 express进行开发,elgato规范如下:1)视频分辨率:640×480(4:3)或640×360(16:9)2 ) 视频格式 PC 软件:H.264 at 1.4 MBit/sec

4

1 回答 1

0

添加

cv::waitKey(1);

在代码行之后在窗口中显示图像。

cv::waitKey()告诉计算机等待一段时间(这里是 1 毫秒)以在窗口中渲染图像cv::waitKey()与_getch ()非常相似,它等待用户输入一个键。

于 2018-04-22T08:42:20.337 回答