OpenCV从外部摄像头捕获

mux*_*sar 2 c macos opencv firewire

我正在使用OpenCV编写一个实时应用程序,在下面的例子中:我正在尝试从插入firewire 800的HDV摄像头捕获图像.我试图循环使用cvCaptureFromCam上使用的索引,但没有摄像头可以'找到(网络摄像头除外).

有我的代码示例,它循环索引(转义0导致它是网络摄像头的索引):

CvCapture* camera;
int index;
for (index = 1; index < 100; ++index) {
    camera = cvCaptureFromCAM(index);
    if (camera)
        break;
}    
if (!camera)
    abort();
Run Code Online (Sandbox Code Playgroud)

在任何时候它停止在中止.

我正在编译OSX 10.7,我测试过:

  • OpenCV 1.2私有框架
  • OpenCV 2.0私有框架(在这里找到:OpenCV2.0.dmg)
  • 我自己编译的OpenCV(第2版)

我知道问题是已知的,并且有很多关于此的讨论,但我找不到任何解决方案.

有没有人在同一案件中?

问候.

小智 6

要明确选择firewire,也许你可以尝试在索引中添加300?至少在OpenCV 2.4中,每种类型的摄像机都有一个特定的域.例如,Video4Linux被赋予域200,因此200是第一个V4L相机,201是第二个,等等.对于Firewire,域是300.如果指定小于100的索引,OpenCV只是迭代它的每个域订单,可能不是您期望的订单.例如,它可能会首先找到您的网络摄像头,但从未找到火线摄像头.如果这不是问题,请接受我的appologies.