OpenCV带2个摄像头VC ++

时间:2012-04-17 15:18:13

标签: opencv webcam

我正在导入立体视觉的源代码。作者的下一个代码是有效的。它需要两个摄像头来源。我目前有两个不同的相机,我收到图像。两者都有效。它在capture2崩溃了。有趣的是,如果我更改网络摄像头的顺序(拔掉它们并反转命令)第一台摄像机将成为第二台摄像机。我们不行吗?我还测试了Windows XP sp3和Windows 7 X64。同样的问题。

//---------Starting WebCam----------
    capture1= cvCaptureFromCAM(1);
    assert(capture1!=NULL); cvWaitKey(100);
    capture2= cvCaptureFromCAM(2);
    assert(capture2!=NULL);

另外如果我使用-1作为参数,那就给我第一个(所有时间)。

使用函数cvCaptureFrom

捕获两个玩家的任何方法

3 个答案:

答案 0 :(得分:2)

首先,摄像机通常从0开始编号 - 这只是问题吗?

其次,directshow和多个USB网络摄像头在Windows中非常糟糕。有时它可以使用两个相同的相机,有时只有它们不同。

您也可以在初始化摄像机之间尝试延迟,有时会锁定捕获流,直到它发送数据,防止另一个被检测到。

通常,司机认为他们是唯一的摄像头并且进行不正确的调用以锁定整个捕获图。在Windows中编写正确的驱动程序+ fdirectshow过滤器非常复杂,这没有帮助

答案 1 :(得分:2)

某些主板无法使用某些USB 2.0相机。一台usb 2.0相机占用40-60%的usb控制器。解决方案是从pci2usb控制器连接第二台USB 2.0相机

答案 2 :(得分:1)

获得2个PS3眼睛,每个约10欧元,以及免费的codelaboratories.com SDK,这使您可以使用C,C#,Java和AS3包含最多2个摄像头。示例等。你也可以获得75 fps @ 640 * 480的FIXED帧速率。他们的免费驱动程序版本5.1.1.0177提供了不错的DirectShow组件,但仅适用于单个摄像头。

其余的假设:多凸轮DirectShow驱动程序应该是任何制造商的默认设置,不提供这是直接故障实现USB的非常基本的PORPUSE和功能作为接口。与为特定传感器/芯片组实现驱动程序本身相比,实现起来也非常容易。

确认在同一对中工作的替代品(通过DirectShow):

  • Microsoft Lifecam HD Cinema(如果可以的话,使用通用的UVC驱动程序,更少限制fps)
  • 罗技Webcam Pro 9000(不要与QuickCam Pro 9000混淆,但不能正常工作)
  • Creative VF0220
  • Creative VF0330
  • Canyon WCAMN-1N

如果您对自己的工作很认真,可以使用一副机器视觉相机来获得性能。市场上最便宜的,具有德国工程质量,CCD,CMOS,单声道,彩色,GigE(以太网),USB,FireWire,优秀的专用驱动器系列:

http://www.theimagingsource.com