2012-02-14 20 views
13

Estoy usando OpenCV2.2 con videoInput. Quiero actualizar a OpenCV2.3.1 donde aparentemente se ha fusionado videoInput en OpenCV2.3.¿Cómo obtengo una lista de dispositivos de cámara web usando opencv?

Mi problema es que no parece haber una función listdevices() para devolver todas las fuentes de video disponibles.

¿Alguien conoce el nuevo equivalente?

+0

se puede poner el código completo al respecto? Estoy tratando de enumerar todos los dispositivos de la cámara web, pero sin éxito –

Respuesta

2

Ver this StackOverflow answer. Actualmente no es compatible con OpenCV porque es multiplataforma, y ​​la enumeración de la cámara es muy específica de la plataforma (por ejemplo, v4l2 se enumera de manera diferente a DirectShow). Pero, alguien presentó un enhancement request contra la versión 2.2 hace un tiempo.

10

Como dijiste, la videoinput se ha fusionado en OpenCV desde 2.3rc.

En cuanto a la entrada de video relevante source parece estar en highgui como se especifica en el registro de cambios de OpenCV. Aunque si su OpenCV está creado con la opción habilitada es una opción configurable en Cmake (la opción es WITH_VIDEOINPUT y también requiere que sea una compilación WIN32, consulte here).

OpenCV llama a listdevices internamente como VI.listDevices() en la implementación de CvCaptureCAM_DShow::open y la clase VideoInput es un miembro protegido de CvCaptureCAM_DShow.

Usted puede obtener acceso mediante la función listdevices

CvCapture* capture = cvCaptureFromCAM(CV_CAP_DSHOW); 
capture->VI.listDevices(); 
+1

¿Cuál es la opción de CMAKE para habilitar VI? ¿Puede usted explicar por favor? I trie dyour code sample snippet. Dice que VI no es un objeto válido. – 2vision2

1

codifiqué una clase que permite enumerar todos los dispositivos mediante la interfaz DirectShow y encuestadores. Si bien solo funcionará en Windows, le permitirá obtener una lista de "nombres de dispositivo amigables" y los identificadores que necesita para crear, por ejemplo, un objeto VideoCapture.

El código está aquí:

https://github.com/studiosi/OpenCVDeviceEnumerator

Cuestiones relacionadas