Saturday, November 22, 2014

Programación lúdica: sobre el desarrollo de software



En estos últimos días he estado trabajando sobre un proyectito simpático, el del Dibujante Electrónico. La idea del software es hacer una especie de sistema que dada una foto, haga una especie de bosquejo de lo que la imagen tiene. Ya expliqué aquí cómo es que el programa reconoce los elementos de la imagen (basándose en el "canny edge detector", un filtro que permite la detección de bordes en una imagen) y del cómo busca general la imagen final.

Sin embargo, una vez que escribí el "punto final" al programa me di cuenta -como ta es costumbre- que el software es ya obsoleto. Es decir, una vez que consideré que tenía una versión razonablemente estable, se me ocurrieron de inmediato nuevas cosas para hacerla más atractiva u como dicen ahora, hacerla una mejor experiencia al usuario.

La primera idea fue incorporar una cámara web que tomara fotos directamente y las pasara al programa para ser directamente procesadas. Alguna vez había intentado manejar videos en mis programas y recuerdo que ni había sido fácil y menos, que fuese posible hacer algo que funcionara para todas las cámaras web que hay en el mercado. De todas maneras me armé de valor y empecé a buscar información. Hallé un par de rutinas que  en principio, podían manejar la imagen. Eran unos componentes para Delphi. Instalé uno y no sirvió. Instalé el segundo y aparentemente las cosas funcionaron mejor. Para esto, tuve que pedir una cámara web prestada porque la mía simplemente la desconoce Windows 7 y el "driver" de la misma no funciona en mi operativo. Me prestaron una cámara de Logitech. Instalé el manejador y listo, todo funcionó correctamente. Mi programa ya podía entonces capturar una imagen para ser procesada por el robot dibujante.

No obstante esto, en algunas pruebas que hice, a veces el manejador de la cámara (que depende de Windows), no hacía correctamente la tarea y se negaba a conectarse, mandándome un error imposible de recuperar. Así, tuve que agregar una advertencia al programa indicando que esta opción era "experimental" y que se usase en esos términos. Hice pruebas en otras máquinas y encontré que con las webcam de Logitech todo funciona correctamente. Probé en mi laptop y a pesar de que el manejador no parece ser el mismo que se usa en Windows 7, las cosas no fallaron. En cambio, en una tablet Iconia, de Acer, con Windows 8, mi programa nunca pudo conectarse con el manejador de la cámara.

Dejando este problema a un lado, le agregué una nueva opción que llamé "herramientas", en donde por lo menos ahora se puede cambiar el color del pincel con el que el programa pinta. Supongo que en la medida que se me vayan ocurriendo nuevas funciones, ahí las pondré. Se me ocurre tener un catálogo de "pinceles" para hacer más flexible la manera de pintar, por ejemplo. Le cambié a todo esto la "piel" a la aplicación y le puse un icono más ad hoc con la idea del software. Ahora se ve mejor el resultado final.

Me faltan cosas, sin embargo. Por ejemplo, no me convence la manera en que el robot dibujante pinta. Me gustaría que pintara más como un dibujante y no "barriendo" la imagen. Eso le daría al usuario elementos para ver a un verdadero robot dibujando. Otra cuestión que he estado pensando y que hay que incorporar en algún momento, es que el programa no pinte exactamente la imagen que ve, sino que se desvié un poco de la misma, haciendo ver "más humano" al programa y no tan perfecto. Esto último sin duda me parece de lo mas atractivo.

Como puede verse, sigue siendo cierta la idea de que todo software acabado es obsoleto. Y aunque no es la última aplicación, la "killer application", me ha enseñado a programar cosas que antes ni idea tenía de cómo hacerlas.

A quien le interese el programa, escríbame a morsa@la-morsa.com y se lo envío a vuelta de correo.

1 comment:

George Berkeley said...

Si, bueno, talvez no importe tanto que el software que terminas haciendo nazca obsoleto. Si aprendes algo, a programar mejor, eso es más que bueno. Si de paso te ganas la lotería, pues qué bien.

Yo, por ejemplo, también programo, pero en el mundo web, con Javascript y PHP. Ya que tengo bases suficientes en éstos, me he animado a estudiar por mi cuenta C# para .NET. Que creo que me va a dar dinero en el futuro.

NOTA: Todos mis comentarios en tu blog tienen un cariz crítico, ya te habrás dado cuenta. Quizá lo hago así porque en la carrera que estudié, Filosofía, me formé así, criticando lecturas. Afortunadamente, me parece, todos mis comentarios son constructivos.

Saludos!

Hotel DF
Hoteles DF
Hoteles en Ciudad de Mexico
Salones para eventod DF