我正在努力在OpenCV中连接我的网络摄像头。我笔记本电脑的64位Windows 7网络摄像头工作正常。但是如果我连接另一个摄像头,代码根本不起作用:
capWebcam = cvCaptureFromCAM(0);
if(capWebcam == NULL) {
printf("error: capture is NULL n");
getchar();
return(-1);
}
由于没有任何摄像头,它返回消息error。我关闭了笔记本电脑的摄像头,它可以工作,但是我的电脑黑屏了。
我尝试了两款网络摄像头,分别是罗技HD Pro C920和微软的LifeCam Cinema。这是负责获取凸轮的行:
CvCapture* mycapWebcam = cvCaptureFromCAM(0);
我将0更改为另一个值(0-10),这是关于该结构的信息:
CvCapture* cvCaptureFromCAM(int index)
初始化从摄像机捕获视频。
参数:index -要使用的摄像机的索引。如果只有一个摄像机,或者使用什么摄像机无关紧要,则可以传递-1。
函数cvCaptureFromCAM()分配并初始化CvCapture结构,用于从摄像机读取视频流。目前Windows上可以使用两种摄像头接口:Video for Windows (VFW)和matrix Imaging Library (MIL);Linux上的两个:V4L和FireWire (IEEE1394)。
释放结构,使用ReleaseCapture。
如何解决这个问题?
尝试使用不同的API -看看我对堆栈溢出问题的回答 Mac上的OpenCV不打开USB网络摄像头。
第一帧经常是黑色的(我不知道为什么)。请等待一段时间并获取另一个帧
如果你使用的是另一台相机,你应该设置1为索引:
capWebcam = cvCaptureFromCAM(1);