OpenCV на Mac не открывает веб-камеру USB
Мне не удалось использовать OpenCV VideoCapture.open(int), чтобы получить захват видео с веб-камеры USB на моем MacBook Pro, работающем под управлением Mac OS X v10.7 (Lion). Использование open(0) успешно получает снимок с камеры iSight. Но мне не повезло, когда я пытался найти веб-камеру.
Веб-камера установлена и хорошо работает со Skype и приложением драйвера macam.
Вот часть кода, который я использую:
VideoCapture cap;
for (int i = 1; i < 1500; i++) {
if (cap.open(i))
{
cout << "Found camera %d\n" << i;
break;
}
}
if(!cap.isOpened()) { // Check if we succeeded
return -1;
}
Если я инициализирую i
с 0 он сразу находит камеру iSight. Если я инициализирую i
с 1, то снова находит iSight, когда i
= 500
Как я могу исправить эту проблему?
1 ответ
Попробуйте запустить свой код без этой строки: break;
, Вероятно, вы найдете более одной камеры, и одна из них будет веб-камерой.
Обратите внимание, что параметр 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;
и я думаю, что вы найдете то, что ищете.