Mac OS X下的OpenCV程序打开iSight,但忽略了我的USB网络摄像头

时间:2010-08-16 10:52:19

标签: macos opencv

我有以下问题: 在我的Mac OS X 10.5.8下的openCV程序中,当我尝试打开我的USB摄像头进行视频时,它总是打开iSight内置摄像头,尽管我明确地将摄像机编号设置为1(iSight应该是0)。此外,选择摄像机编号为2,3等也可以打开iSight摄像头,但我只连接了2台摄像机。

我尝试了以下

CvCapture * camera = cvCaptureFromCAM( 1 );

CvCapture * camera = cvCreateCameraCapture ( 1 );

他们都给出了相同的结果。有趣的是,当我从Skype或PhotoBooth从iSight摄像头打开视频捕获时,它占用了频道,并且openCV程序被迫打开网络摄像头频道,没有任何问题。

我的问题是,如何在我的openCV程序中明确选择网络摄像头,而不必先在另一个程序中占用iSight频道?

谢谢。

P.S。该程序在Windows下工作 - 我只在带有1个摄像头(相同的网络摄像头)的机器上尝试过,但是如果我指定任何不同于0或CV_CAP_ANY的东西它会崩溃,所以我认为它正确搜索了摄像头。

2 个答案:

答案 0 :(得分:0)

看起来这个问题只是1.1中的一个错误,我认为你使用的版本是因为你在mac上并且私有框架是用该版本构建的。我通过拉下2.1源代码来修复这个问题,构建它,然后链接到那里的dylib。

答案 1 :(得分:0)

抓住最新的OpenCV(此时版本为2.1)并尝试打开您的设备:

if ((capture = cvCaptureFromCAM(0)) == NULL)
{
        std::cerr << "!!! ERROR: vCaptureFromCAM No camera found\n";
        exit(-1);
}