2012-06-16 177 views
0

我正在学习OpenCV,因为我想在夏天构建和编程3D扫描仪。OpenCV - 网络摄像头不起作用

我为此目的购买了三个摄像头(两个用于实际立体图像,一个用于纹理[或作为备份])。

我试图用OpenCV获得摄像头的视频。然而,这是行不通的,因为我最终以黑屏而不是视频。

然后我用祖母的摄像头试了相同的代码。它运行良好。 但是,我已经购买了3种我打算用来制作扫描仪的网络摄像头:http://www.amazon.com/Webcam-Camera-Vision-Meeting-compatible/dp/B0015TJNEY/ref=pd_bxgy_e_img_b

我不想购买任何新的网络摄像头。

有没有人有任何想法,为什么我的摄像头不能使用OpenCV(他们与其他程序一起工作)?

如何让OpenCV接受我的摄像头?

任何建议,将不胜感激!

感谢

+0

@shobhit嗯,我查找任何错误消息 - 没有。我也看了一下驱动文件。它被称为:'usbvideo.sys'。我也看了看周围的Stackoverflow,发现:http://stackoverflow.com/questions/4430367/opencv-webcam-capture-problem?rq=1。它基本上说明了我的问题。但是第一个解决方案不起作用,因为我已经包含了'cvWaitKey'。第二个解决方案似乎是我的问题,但我想知道如何解决它。 – eboix

+0

你的操作系统是什么?我们可以通过usbvideo.sys驱动文件告诉它是windows,但即便如此。相机是否可以与其他程序一起使用? –

+0

该相机可与其他程序一起使用,例如VLC播放器。我有Windows 7企业版。如果我的摄像头无法与OpenCV一起工作,那么我会下载一些其他库,并将网络摄像头输入到一个文件中,然后我将使用OpenCV读取它。 – eboix

回答

0

如果你的程序通过这一步,你应该尝试cvCaptureFromCAM(0); 0不同的号是第一个网民,但也许你的设置为1,2或3,你也可以尝试-1看看会发生什么

CvCapture *capture; 
capture = cvCaptureFromCAM(0); 
if (!capture) 
{ 
    printf("Error at capture"); 
    return 1; 
} 
+0

感谢您的帮助。我之前做过。 “capture”不是“NULL”。我从中得到的图像也不是“NULL”。但是,它是空白的。 – eboix

+0

尝试使用cvWaitKey(1);每帧之后或尝试调试,并看看等待是否是问题。 – Mark

+0

我的代码实际上有'cvWaitKey',它和我祖母的相机一起工作。 – eboix