我使用OpenCV的videoccapture .open(int)从运行Mac OS X v10.7 (Lion)的MacBook Pro中的USB网络摄像头获取视频捕获失败。使用open(0)成功获取iSight相机的捕获。但是我没能找到摄像头。
WebCam已安装,与Skype和macam驱动程序运行良好。
下面是我使用的一部分代码:
VideoCapture cap;
for (int i = 1; i < 1500; i++) {
if (cap.open(i))
{
cout << "Found camera %dn" << i;
break;
}
}
if(!cap.isOpened()) { // Check if we succeeded
return -1;
}
如果我用0初始化i
,它立即找到iSight相机。如果我用1初始化i
,那么当i
= 500时,它再次找到iSight。
如何解决这个问题?
尝试运行没有这一行的代码:break;
。也许你会发现不止一个摄像头,其中一个是WebCam。注意cap.open
的参数不仅仅是相机的数量——它还定义了你想使用的API:
摄像机调度方式:index
为摄像机编号。
- 如果给定从0到99的索引,它会尝试查找第一个
- API,可以访问给定的相机索引。
- 添加100的倍数来选择API(来自cap.cpp的注释)
可能性(取自highgui_c.h):
CV_CAP_ANY =0, // autodetect
CV_CAP_MIL =100, // MIL proprietary drivers
CV_CAP_VFW =200, // platform native
CV_CAP_V4L =200,
CV_CAP_V4L2 =200,
CV_CAP_FIREWARE =300, // IEEE 1394 drivers
CV_CAP_FIREWIRE =300,
CV_CAP_IEEE1394 =300,
CV_CAP_DC1394 =300,
CV_CAP_CMU1394 =300,
CV_CAP_STEREO =400, // TYZX proprietary drivers
CV_CAP_TYZX =400,
CV_TYZX_LEFT =400,
CV_TYZX_RIGHT =401,
CV_TYZX_COLOR =402,
CV_TYZX_Z =403,
CV_CAP_QT =500, // QuickTime
CV_CAP_UNICAP =600, // Unicap drivers
CV_CAP_DSHOW =700, // DirectShow (via videoInput)
CV_CAP_PVAPI =800, // PvAPI, Prosilica GigE SDK
CV_CAP_OPENNI =900, // OpenNI (for Kinect)
CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion)
CV_CAP_ANDROID =1000, // Android
CV_CAP_XIAPI =1100, // XIMEA Camera API
CV_CAP_AVFOUNDATION = 1200 // AVFoundation framework for iOS (OS X Lion will have the same API)
可能CV_CAP_AVFOUNDATION = 1200
是你正在寻找的-尝试从1200开始循环,不要忘记删除break;
,我认为你会找到你正在寻找的