Как позволить пользователю выбрать устройство записи видео (веб-камеру) с OpenCV? - PullRequest
7 голосов
/ 26 ноября 2010

Так что мне нужно что-то вроде списка устройств захвата.

И какая-то функция для получения от пользователя того устройства, с которого он хочет осуществлять потоковую передачу.

Как это сделать с openCV в win32Консольное приложение C ++?

Ответы [ 3 ]

5 голосов
/ 26 ноября 2010

Как сказал Мартин, он не поддерживается в OpenCV, но вы можете использовать небольшую хитрость. Если это удовлетворяет вашим потребностям, вы можете узнать количество камер, последовательно перечислив камеры, вызывая cvCreateCameraCapture() до тех пор, пока не вернется NULL.

Sth, как это:

CvCapture *cap;
int n = 0;
while(1)
{
   cap = cvCreateCameraCapture(n++);
   if (cap == NULL) break;
   cvReleaseCapture(&cap);
}

cvReleaseCapture(&cap);
return n-1;

Теперь у вас есть несколько камерных устройств, поэтому вы можете позволить своему пользователю выбрать его по индексу из списка, т.е.

Недостатком является то, что OpenCV не предоставляет вам никакой информации об имени устройства, поэтому, если вы тоже хотите это сделать, вам стоит взглянуть на Microsoft DirectShow или библиотеку, предложенную Мартином.

3 голосов
/ 26 ноября 2010

Не поддерживается напрямую в opencv (AFAIK), но попробуйте http://www.muonics.net/school/spring05/videoInput/

1 голос
/ 26 ноября 2010

Попробуйте использовать некоторые функции ОС для перечисления веб-камер.Это может потребовать некоторой работы, но этот подход гарантирует, что вы будете получать список каждый раз (в отличие от взлома OpenCV, который по некоторым причинам иногда не работает).

...