0

我正在使用 openCV 在 C 中为 Windows 编写一个应用程序。我想从网络摄像头捕获视频并将其显示在窗口中。该应用程序即将完成,但无法正常工作。我认为这是因为 cvQueryFrame() 总是返回 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");

}

让我们看看是否有人有一些想法并可以帮助我解决这个问题,谢谢!

4

2 回答 2

1

看来你还没有打开捕获。在 main 开头添加:

CvCapture* capture = 0;
capture = cvCaptureFromCAM(0);
于 2013-08-15T13:12:18.187 回答
1

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

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

快速总结:

重新编译opencv_highgui,将属性页的C/C++面板中的“预处理器定义”更改为包括:HAVE_VIDEOINPUT HAVE_DSHOW

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

于 2013-08-15T16:52:31.750 回答