2

我目前正在使用 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)

我知道这个问题是已知的,并且对此有很多讨论,但我无法找到任何解决方案。

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

问候。

4

2 回答 2

6

要明确选择火线,也许您可​​以尝试将 300 添加到您的索引中?至少在 OpenCV 2.4 中,每种类型的相机都有一个特定的域。例如,Video4Linux 的域是 200,所以 200 是第一个 V4L 摄像头,201 是第二个,等等。对于 Firewire,域是 300。如果您指定的索引小于 100,OpenCV 只会遍历其中的每个域顺序,可能不是您期望的顺序。例如,它可能会先找到您的网络摄像头,而永远不会找到火线摄像头。如果这不是问题,请接受我的道歉。

于 2012-11-01T19:25:52.340 回答
2

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

如果这不起作用,可能 OpenCV 不支持您的相机。我建议你检查它是否在兼容性列表中

于 2012-04-20T16:36:43.333 回答