Discusión:Plugin QR 2013
Contenido
Introduccion
Este proyecto propone la creación de una paleta que permita procesar códigos QR con la cámara de la XO y obtener el string asociado al mismo.
Análisis del problema
Principalmente el problema puede descomponerse en dos grupos:
- Decodificar imagines QR en codigo nativo python. Evitando la compilacion para diferentes arquitecturas.
- Agregar una paleta que permita capturar y decodificar imagines en format QR
Investigacion
Primera etapa
Dado que en la actulidad los codigos QR estan siendo cada vez mas utilizado para distintos ambitos, se penso que podria existir alguna herramienta Open Source que cumpliera con algunos de los objetivos de nuestro proyecto. Luego de algun tiempo de investigacion y pruebas de varias herramientas gratuitas, concluimos que en la actulidad no existe una herramienta que cumpla con nuestras condiciones.
Encontramos algunas librerias de python como qrencode o libqrencode que permiten a partir de un texto y/o url generar una imagen QR. Al momento de la decodificacion de QR encontramos muchos ejemplos escritos en lenguajes de programacion C, Java, Perl, Python. Pero todos ellos tienen un denominador comun,y es que todos ellos utilizaban librerias en C para la decodificacion. Dichas librerias son componentes del modulo Zbar (escrito en C). Ademas podemos decir que dicho codigo no fue localizado. En consecuencia para poder utilizar dicho modulo deben ser descargados para las arquitecturas a utilizar.
Segunda etapa
Dadas las dificultades descriptas anteriormente se plantea al equipo analizar el costo de desarrollar el algoritmo de decodificacion QR en Python. Se realizo dicha investigacion y se entrega diferentes documentos:
1- Analisis detallado para resolver la decodificacion de QR Archivo:Analisis decodificación QR Code.pdf. 2- Documento de riesgos Archivo:Riesgos decodificación QR Code.pdf. 3- Cronograma de implementacion y testing Archivo:Cronograma.pdf.
Tercera etapa
A partir de la documentacion entrega se llego a la conclucion que siendo un algoritmo de desarrollar complejo se opto por seguir otro caminos. Estos fueron investigar Perl. Se investigo y todos los ejemplos no fueron exitosos. En consecuencia se sigue el camino de Python utilizando librerias en C, en particular Zbar.
En paralelo se agregar un nuevo plugin a turtleBots llamado qr, dicho plugin permitira capturar imagenes y decodificarla. Para la captura desde turteBlots se utilizo OpenCV.
Instalacion
Las pruebas fueron realizadas en 3 distribuciones de linux (Ubuntu, Fedora, Sugar).
A continuacion se indica los comandos para instalar las librerias qrtools y zbar
Ubuntu: 'sudo apt-get install python-qrtools'
Fedora y Sugar: 'sudo yum install pyqt4 qrencode python-imaging zbar-devel' 'sudo easy_install zbar' si dicho comando falla ejecutar 'sudo yum install zbar-devel'
Posteriormente se agregar el plugin qr a la actividad TurtleBots...
Trabajo a futuro
- Implementar el algoritmo de decodificacion nativo en python, y sustituir las librerias binarias (zbar).\n - Mejorar la velocidad entre la captura de imagen con OpenCV y readCam de Zbar.
Concluciones
- Dicho proyecto lo abocamos mas a la investigacion, ya que nos enfrentamos a varios problemas (entre ellos se puede nombrar a la incompatibilidad entre archivos binarios y distribuciones linux
Referencias
Java / C http://www.chuidiang.com/clinux/herramientas/librerias.php
QR Python http://ralgozino.wordpress.com/2011/06/13/how-to-create-and-decode-a-qr-code-in-python-using-qrtools/ Paquetes y Dependencias http://blog.desdelinux.net/como-identificar-las-dependencias-de-un-paquete-o-archivo-binario/ http://www.linux-magazine.es/issue/62/043-047_PythonLM62.pdf
QR Perl http://oylenshpeegul.typepad.com/blog/2012/01/reading-qr-codes-in-perl.html http://search.cpan.org/~kurihara/Imager-QRCode/lib/Imager/QRCode.pm http://www.foo.be/docs/tpj/issues/vol5_2/tpj0502-0008.html http://iharder.sourceforge.net/current/macosx/imagesnap/
Python & C http://stackoverflow.com/questions/9420673/is-it-possible-to-compile-c-code-using-python