OpenCV cvCaptureFromCAM返回零

我的笔记本电脑上安装了OpenCV 2.1,并试图实施一个人脸检测程序。 我为我的项目使用罗技C210。 我知道相机是好的,因为软件检测并显示它,并在示例目录中启动facedetect.exe显示相机正在工作。 但不知何故,当我在VS2010旗舰版中使用原始的facedetect.cpp代码时,我甚至无法使用cvCaptureFromCAM工作! 这是我的代码:

#include "stdafx.h" #include <iostream> #include "cv.h" #include "highgui.h" using namespace std; using namespace cv; int main(int, char**) { IplImage* frame; // CvCapture* cap = cvCaptureFromCAM(-1); // cvNamedWindow( "Example2_9", CV_WINDOW_AUTOSIZE ); CvCapture* capture; cvWaitKey(20); capture = cvCreateCameraCapture( -1 ); //yes, if 0 doesn't work try with -1 //assert( capture != NULL ); for(;;) { frame = cvQueryFrame(capture); if(frame == NULL) return -1; imshow("cap", frame); if(waitKey(30) >= 0) break; } } 

好吧,这不是真正的facedetect代码(它太长了),但它突出了它认为的问题:

使用断点,我发现cvCaptureFromCAM后的值是0x000000。 这不应该发生,是吗? 有人能告诉我发生了什么事吗?

Solutions Collecting From Web of "OpenCV cvCaptureFromCAM返回零"

尝试重复呼叫。 请参考我的问题,看起来相似。 如何避免在OpenCV 2.3.0 – Visual C ++ 2008中选择“视频源 – >捕获源”

尝试升级到OpenCV 2.4.2。 不完全相同的问题(对于我来说,queryFrame()总是返回NULL使用v2.2.0),但现在它像一个魅力。 也许只是兼容性问题。