OpenCV从外部摄像头捕获

时间:2012-04-20 14:29:36

标签: 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();

任何时候它都会在中止时停止。

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

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

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

有没有人遇到过同样的情况?

问候。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

index应该从 0 开始,而不是 1

如果不起作用,OpenCV可能不支持您的相机。我建议您检查它是否在compatibility list