Ir al contenido principal

OpenCV - Computer Vision Library

OpenCV es una librería Open Source para la visión artificial o visión por computadora (del inglés computer vision) escrita en C y C++. Corre bajo Linux, Windows y Mac OS X. También se puede utilizar con lenguajes como Python, Ruby, Matlab entre otros.
Esta librería fue desarrollada originalmente por Intel en sus laboratorios de investigación, y fue concebida como una manera de hacer disponible universalmente la infraestructura para la vision artificial.
Con el objetivo de que OpenCV sea utilizada para promover el uso comercial y la investigación, es abierta y libre. Esto quiere decir que puede ser embebida completa o parcialmente en otras aplicaciones sin la obligación de que esas aplicaciones sean abiertas o libres.
Esta librería puede ser encontrada en SourceForge.net donde podrán descargarla o ir a la documentación en línea, la cual es muy completa.
¿Qué se puede hacer con OpenCV? Bueno, las posibilidades solo tienen el límite de quien la utilice, sin embargo algunas de las aplicaciones de esta librería son, principalmente, la detección, reconocimiento y rastreo de objetos.
En este campo de aplicación algunos usos puntuales son por ejemplo la detección de objetos "olvidados" en un aeropuerto, como valijas, bolsas, paquetes, etc. Esto ayuda al personal de seguridad a tomar acciones preventivas contra atentados terroristas. Otro caso muy práctico es la detección de movimiento para sistemas de seguridad en oficinas, bancos, comercios, etc. Se dispone una webcam conectada a una PC y el software con OpenCV es capaz de grabar aquellos frames donde se ha detectado movimiento para que luego el personal de seguridad analice las imágenes para saber quién o qué "anduvo" por el lugar.
Si se realiza una búsqueda en internet sobre el tema verán que otra aplicación muy útil es el reconocimiento de rostros. Parece un concepto muy simple porque nuestro cerebro está preparado para realizar esa tarea desde el momento en que podemos "ver" cuando se es apenas un recién nacido, pero el tema es muy diferente cuando hay que hacer que una computadora realice esa simple tarea.
El reconociento de rostros trae aparejada un gran cantidad de tareas que combinadas logran el objetivo.
Primero hay que "saber" cómo se compone un rostro, qué forma tiene, etc. Parece muy simple ¿no? ... En realidad no tanto.
El software de reconocimiento debe "saber" qué características buscar dentro de una imagen y luego comparar esas características con la imagen para lograr coincidencias y si las hubiere determinar si es o no un rostro. Un software sencillo solo debería considerar que un rostro posee dos ojos, nariz y boca todo circunscripto en una figura geometrica que bien podría ser un círculo o elipse.
Ahora bien, el truco está en que dependiendo del ángulo de la cámara el rostro y todo su "contenido" se deforma, es decir adquiere perspectiva con lo cual el reconocimiento puede complicarse. También debe considerar el tamaño o mejor dicho tiene que poder saber que un rostro pequeño y uno grande siguen siendo rostros no solo porque puede ser el de un niño o el de un adulto sino que puede ser un rostro alejado de la cámara o uno muy cercano.
Las técnicas para el reconocimiento de rostros son diversas, pero todas son un conjunto de fórmulas matemáticas, algunas más complejas que otras.
Bien, ¿para qué podría servir todo esta complejidad para un problema tan simple? sencillo, lamentablemente hay mucha gente que no tiene acceso a la tecnología, por ejemplo a una PC debido a que por algún motivo le es imposible utilizar sus manos ya sea porque le fueron amputadas o por algún tipo de parálisis. Este tipo de software podría ayudar a estas personas.
En un artículo anterior de este blog se ha mencionado un programa que permite manejar el puntero del mouse solamente con la cabeza, puntualmente con la gesticulación del rostro o con el movimiento de la cabeza.
OpenCV es una librería con un potencial muy grande y como se dijo al principio, solo está limitada por quien la utilice.
En próximos artículos se expondrán ejemplos prácticos del uso de esta útil librería.

Comentarios

Entradas populares de este blog

Configurar Wi-Fi en Slackware

Ahora es común tener una notebook pero no lo es tanto el tener un linux en ella y mucho menos tener un Slackware en la notebook. Sin embargo, es posible tenerlo por lo que vale la pena dedicarle unas líneas a la configuración del Wi-Fi. Primero que nada hay que saber cuál es la placa de red inalambrica que posee la notebook, es decir su marca y modelo. Si ya está Linux instalado en la notebook solo se debe ejecutar el siguiente comando para saber cuál es la marca y modelo de la placa de red inalambrica: # lspci Este comando dará como resultado algo similar a esto: 09:00.0 Ethernet controller: Marvell Technology Group Ltd. Unknown device 4354 (rev 12) 0b:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02) En estas líneas se puede observar que la segunda hace referencia a la placa de red inalambrica que posee la notebook, en este caso una Intel PRO/Wireless 3945ABG . Con esta información lo que se debe hacer es buscar cuál es el módulo que se deb...

¿Qué hace un Licenciado en Sistemas?

Muchas veces, conocidos que no son informáticos, me han preguntado ¿qué hace un Licenciado en Sistemas? ...... " Buena pregunta " - sonaba en mi cabeza. Yo sé lo que yo quiero hacer en mi vida profesional pero realmente ¿qué perfil tiene un Licenciado en Sistemas? Es sencillo saber qué hace un médico, un veterinario, un ingeniero civil, etc. Por ejemplo si su perro se enferma ¿a quién llaman? si quieren construir un puente ... ¿a quién llaman? si ustedes están enfermos ¿a quién llaman? Ahora, si necesitan un sistema para su empresa ¿a quien llaman? ... ¿a un Lic. en Sistemas? ¿a un Ing. en Sistemas? ¿a un programador de aplicaciones? ¿a un analista en sistemas? ¿a un consultor informático? o ¿al amigo que se la pasa en internet y que sabe "todo" sobre computadoras e hizo un montón de cursos (word, excel, windows, redes, etc.)? Esta situación se presenta a menudo; es tan confuso que muchas veces hasta los mismos profesionales informáticos o entendidos en la materia ...

Paquetes para Slackware

Para aquellos que recién comienzan a utilizar Slackware , esta grandiosa distribución GNU/Linux una de las más antiguas, estables y seguras que existen; de seguro se habrán encontrado con la tarea de instalar algún programa extra y que no es distribuido junto con Slackware. Uno de los mejores sitios para encontrar software empaquetado para esta distro es Linuxpackages.net ; en este sitio podrán realizar búsquedas en versiones específicas de Slackware inclusive en la última versión liberada, la 12.1. Los paquete que aquí se encuentran ya han sido precompilados por lo que no deberán realizar los típicos pasos "./configure","make" y "make install"; sino que solamente podrán utilizar las herramientas installpkg, pkgtool o kpackage para instalar los paquetes descargados desde este sitio. Claro que no siempre encontrarán el soft que buscan en este excelente sitio, en esos casos siempre es bueno recurrir a los sitios del autor del soft en cuestión para obtener l...