使用opencv进行视频捕获

时间:2013-08-15 12:32:47

标签: c opencv

我正在使用openCV在C中为Windows编写应用程序。我想从网络摄像头捕获视频并在窗口中显示。 该应用程序几乎完成但它无法正常工作。我认为这是因为cvQueryFrame()alwasy返回NULL而我不知道为什么。我尝试在进入之前拍摄一些帧,但没有解决问题。

编译器没有显示任何错误。这不是编译问题,而是执行问题。我一步一步地在行中调试了它

if(!originalImg) break;
总是跳出来的。这就是应用程序不会继续执行的原因。它打开和关闭非常快。 这是代码:

void main()
{
cvNamedWindow("Original Image", CV_WINDOW_AUTOSIZE);

while (1)
    {
    originalImg = cvQueryFrame(capture);

    if(!originalImg) break;

    cvShowImage("Original Image", originalImg);

    c = cvWaitKey(10);
    if( c == 27 ) break;
}

cvReleaseCapture(&capture);

cvDestroyWindow("Original Image");

}

让我们看看是否有人有一些想法可以帮助我,谢谢!

2 个答案:

答案 0 :(得分:1)

好像你没有打开捕获。 在main的开头添加:

CvCapture* capture = 0;
capture = cvCaptureFromCAM(0);

答案 1 :(得分:1)

假设编译正常(包括所有相关库),可能是摄像机未正确安装。你可以检查一下你是否能够使用网络摄像头(使用其他软件)

如果编译实际上是问题,请参考以下相关问题: https://stackoverflow.com/a/5313594/1218748

快速摘要:

  

重新编译opencv_highgui,更改属性页面的C / C ++面板中的“Preprocesser Definitions”,包括:HAVE_VIDEOINPUT HAVE_DSHOW

还有其他好的答案可以提出一些相关的优点,但我的直觉是上述解决方案可行: - )