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