Skip to Content

Códigos de barras + webcam + cualquier aplicacion

Este es un post atípico en este blog, pero al no haber encontrado ningún blog, foro o lista de correo que haya dado una solución al problema creo que merece la pena hacer publico este truco.
Como algunos sabréis existen los lectores de codigos de barras con conexion ps2 o Usb que emulan un teclado (dispositivo HID) y permiten escribir la lectura de los códigos en cualquier cuadro de texto donde este el cursor (si esa rallita negra que parpadea al escribir :P).
Lo que quizas alguno no sabeis es que los codigos de barra se pueden tambien leer desde una webcam, o una foto, o desde el scanner de casa , el sofware encargado de hacer esta magia es  zbar que podeis encontrar en los repositorios de Ubuntu/Debian
He aqui un tutorial para que tu webcam haga la misma función que los lectores incluyo un video demostracion  (de calidad pesima) al final del post.
Para instalar zbar en Ubuntu (o Debian)
#apt-get install zbar-tools
zbar Son un conjunto de librerias y utilidades para decodificar  imagenes de codigo de barras procedentes de cualquier fuente, tiene herramientas para integrarlo en vuestro proyectos en C, Python, Qt, Gtk,.... no voy a entrar mas en detalle por que no es el objetivo del alticulo, solo voy a centrarme un una utilidad que tambien estan incluidas en las zbar-tools, el programa zbarcam.

Como veis en la captura de pantalla ejecutado desde la consola, escribe por stdout todos los códigos de barras que va detectado la webcam, en tiempo real, y la verdad es que me ha sorprendido gratamente la rapidez y precision con que lo hace, probando con varios tamaños(algunos realmente pequeños) y diferentes tipos de codigo, EAN13, CODE128, I2/5 y en unas condiciones de luz bastante pobres.

Hasta aquí nada nuevo bajo el sol, pero como llevar ese código que tan amablemente nos ha escrito zbar en la consola a  por ejemplo el cuadro de texto de un buscador? o de nuestra aplicación de gestión? o de un simple bloc de notas sin tener que recurrir al copiar y pegar desde la consola?

Aqui es donde entra en accion Crikey! un pequeño programa escrito en C por Akkana Peck que precisamente hace los que buscamos, envía cadenas de texto como si fueran teclas pulsadas del teclado. Hay que descargarse el código fuente, instalar las dependencias y compilar , instrucciones para Debian/Ubuntu:
Ubuntu:
$ sudo apt-get install libx11-dev x11proto-xext-dev libxt-dev libxtst-dev
Debian:
$ su
# apt-get install libx11-dev x11proto-xext-dev libxt-dev libxtst-dev
# exit

Debian/Ubuntu:
$ wget http://www.shallowsky.com/software/crikey/crikey-0.8.3.tar.gz
$ tar -xzf crikey-0.8.3.tar.gz
$ cd crikey-0.8.3
$ make

Ya tenemos el ejecutable "crikey" si queremos utilizarlo sin tener que entrar en el directorio donde lo hemos compilado,
como root lo copiamos en /usr/local/bin, por ejemplo

# cp crikey /usr/local/bin

Y ya tenemos lo tenemos listo
en un terminal ejecutad
$ zbarcam --raw|crikey -i
Abrid cualquier aplicacion por ejemplo el gedit y enfocad a un codigo de barras con vuestra webcam, TADAAAAAA!!!!
y aqui un video demostración, perdonad por la oscuridad pero se me fundio la la lampara que suelo usar para grabar en video, pero lo bueno es que aun a con muy poca luz el sistema funciona :), os recomiendo ver el video a pantalla completa.