我有以下问题: 在我的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的东西它会崩溃,所以我认为它正确搜索了摄像头。
答案 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);
}