Usando OpenCV y una WebCAM en el Beaglebone


Con Beaglebone se pueden hacer muchas cosas, sobre todo ahora que tenemos instalado Ubuntu, podemos probar cosas diferentes como conectar una cámara web y usar la biblioteca de OpenCV para hacer una captura.

Veamos como…

Elementos usados

  • Beaglebone Rev.  A5 con Ubuntu 12.04
  • Cable de red
  • Camara Logitech C910
  • Fuente de poder 5V @ 1800mA

Procedimiento

Conectamos la cámara en el puerto USB y el cable de red en el puerto Ethernet, luego encendemos el Beaglebone conectando a la fuente de poder

Veamos algunos comandos para identificar la cámara

ubuntu@omap:~$ lsusb | grep Logitech
Bus 001 Device 002: ID 046d:0821 Logitech, Inc. HD Webcam C910
ubuntu@omap:~$

usamos el vendor id, 046d en este caso para obtener mas informacion sobre la cámara

ubuntu@omap:~$ dmesg | grep 046d
[ 2.055669] usb 1-1: New USB device found, idVendor=046d, idProduct=0821
[ 7.245072] uvcvideo: Found UVC 1.00 device <unnamed> (046d:0821)
[ 7.385778] input: UVC Camera (046d:0821) as /devices/platform/omap/musb-ti81xx/musb-hdrc.1/usb1/1-1/1-1:1.2/input/input0
ubuntu@omap:~$

se puede apreciar que el driver es del tipo USB Video Class

Instalación del Software

Primero debemos instalar OpenCV para Python y la biblioteca numpy, necesaria para operaciones más complejas, con el siguiente comando se obtienen las dependencias necesarias

sudo apt-get install python-opencv python-numpy python-dev

Ahora creamos un script en python con el comando

sudo nano cam.py

El contenido del script es el siguiente

import cv

cam = cv.CaptureFromCAM(-1)               # -1 selects any camera
cv.WaitKey(300)                           # wait for 300ms
image = cv.QueryFrame(cam)                #
cv.SaveImage("/var/www/cam.jpg", image)   # select folder

Para ejecutar usamos el comando

sudo python cam.py

La captura de la foto se puede apreciar en la siguiente dirección

http://ip_address/cam.jpg

Donde ip_address = direccion IP del Beaglebone

Comentarios adicionales

La imagen obtenida no es óptima, debido a que una WebCam no está optimizada para un tiempo de exposición breve
Hasta ahora hemos probado en un modelo de cámara, según parece la marca Logitech es mejor soportada
No se han realizado intentos por optimizar el codigo, el objetivo es mostrar la funcionalidad.

Bibliografia

Listado de cámaras soportadas por UVC aqui
Conceptos de OpenCV y Python aqui

Author: Manuel Carrasco

Ingeniero Eléctrico, Institutano, instructor certificado Cisco, en twitter @mcarrasco con comentarios y opiniones personales.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *