我正在使用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");
}
让我们看看是否有人有一些想法可以帮助我,谢谢!
答案 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
还有其他好的答案可以提出一些相关的优点,但我的直觉是上述解决方案可行: - )