Capturing a video with video capture card, opencv
以上问题几乎问我想要什么。我有一个elgato(elgato视频捕捉http://www.elgato.com/video/video-capture)帧抓取器,它有USB 2.0接口。我试图使用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,1.4 MBit / sec
答案 0 :(得分:0)
添加
cv::waitKey(1);
在代码行之后在窗口中显示图像。
cv :: waitKey()告诉计算机等待一段时间(此处为1ms)在窗口中呈现图像。 cv :: waitKey()与 _getch()非常相似,它等待用户输入密钥。