domingo, 2 de enero de 2011

Limitaciones en la captura de imágenes con OpenCV

Dependiendo del dispositivo de captura usado, la plataforma sobre la que se compile la aplicación (cada API de cada sistema operativo tiene diferentes limitaciones y ventajas) y el dispositivo de captura usado (no todos los dispositivos admiten cualquier resolución), podremos hacer uso de la configuración del alto y ancho de la imagen (resolución) que deseamos obtener del dispositivo de captura.

Esto nos permitirá, sobre todo, ahorrar ancho de banda del bus al que se encuentre conectado el dispositivo, disminuir el uso de CPU para procesar cierto tipo de imágenes (sobre todo si se trata de una cámara que ofrece unas resoluciones muy elevadas), aumentar el número de imágenes por segundo que podemos obtener del dispositivo, etc.

Para conseguirlo deberemos hacer uso de la función cvSetCaptureProperty para modificar los parámetros CV_CAP_PROP_FRAME_WIDTH (ancho) y CV_CAP_PROP_FRAME_HEIGHT (alto).

Podemos ver cómo hacerlo en el siguiente ejemplo:

Nota: La implementación de V4L2 en OpenCV 2.1 parece estar rota bajo Linux, por lo que falla el cambio de resolución. He encontrado parches para hacerlo funcionar de nuevo, pero confío en que lo arreglarán en breve espacio de tiempo.

No hay comentarios:

Publicar un comentario

Debido al aumento de comentarios de spam he moderado todos los comentarios. No se publicará hasta que le dé el visto bueno. Gracias y disculpad las molestias.