我目前正在使用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,我测试过:
我知道问题是已知的,并且有很多关于此问题的讨论, 但是我找不到任何解决办法。
有没有人遇到过同样的情况?
问候。
答案 0 :(得分:6)
要明确选择firewire,也许您可以尝试在索引中添加300?至少在OpenCV 2.4中,每种类型的摄像机都有一个特定的域。例如,Video4Linux被赋予域200,因此200是第一个V4L相机,201是第二个,等等。对于Firewire,域是300.如果指定小于100的索引,OpenCV只是迭代它的每个域订单,可能不是您期望的订单。例如,它可能会首先找到您的网络摄像头,但从未找到火线摄像头。如果这不是问题,请接受我的批评。
答案 1 :(得分:2)
index
应该从 0 开始,而不是 1 。
如果不起作用,OpenCV可能不支持您的相机。我建议您检查它是否在compatibility list。