• Home   /  Educacion   /  Campus   /  
  • Taller de sistemas interactivos: Visión artificial, C++ y OpenFrameworks
Taller de sistemas interactivos: Visión artificial, C++ y OpenFrameworks
11
http://libertar.io/vision

Código

Las referencias de código están disponibles en nuestro repositorio en Github.com/lablibertario

 

Instalación OpenFrameworks + IDE

Basado en el tipo de sistema operativo (OSX, Linux, Windows) descarga la distribución apropiada de openFrameworks. Instrucciones http://www.openframeworks.cc/download/

ofx kinect-8

 

Necesitaremos un IDE Integrated Development Environment:

Mac OS X: Instalación de Xcode como IDE

Descargar una versión apropiada de XCode desde OSX App Store (>3GB). Puedes necesitar hacer login con tu cuenta de http://developer.apple.com.
Encuentra versiones antiguas de Xcode en esta página.

 

ofx kinect-10

Adicionalmente, en el terminal (Applications/Utilities/Terminal) escribimos para instalar “command line tools” literalmente lo siguiente:

ofx kinect-12

 

Si durante el desarrollo nos encontramos con el error LLVM CLAN Xcode 8 una posible solución es Instalar Xcode versión 7 desde esta página.

Xcode 7 xcode 7

 

 

Windows: Instalación de Visual Studio Community 2015 como IDE

Descargar Visual Studio Community 2015 (<10MB). Ejecutar el instalador, e instalar usando la configuración por defecto.

vs_install

Video Codecs

Ofx video player usa actualmente “DirectShow” y no “QuickTime” razón por la cual debemos instalar los códecs adecuados K-Lite Codec Pack – Version 12.1.0 Full April 18th 2016 (34MB)

Plugin openFrameworks para Visual Studio

Antes de poder usar openFrameworks con Visual Studio, debe tener instaladas Herramientas comunes para Visual C ++ 2015, de lo contrario obtendrá un mensaje de error más adelante. Para instalar, vaya a Archivo> Nuevo> Proyecto y elija Visual C ++ en la sección de plantillas instaladas.

Ahora debe haber una opción para instalar las herramientas. Seleccione, confirme con ‘OK’ y siga las instrucciones.

Desde Visual Studio, ir a Tools > Extensions and Updates (Herramientas > Extensiones y Actualización). Seleccionar “online” y buscar openFrameworks e instalar el plugin.

Eso nos deja usar File > New > Project para crear Nuevo Projecto de openFrameworks y el menú contextual para remover o añadir addons de OF.

Después de ejecutar la primera instalación de Visual Studio, el sistema tendrá que instalar para C+ + algunas herramientas adicionales:
Primero, descomprimir el zip descargado de openFrameworks y colocar el contenido en alguna carpeta fácil de encontrar.
Seleccionar un ejemplo de proyecto y haga doble clic en el archivo .vcxproj. Visual Studio debe abrir el proyecto. En Visual Studio haga clic en el botón de “Run” con el esquema ‘Local Windows Debugger’ activado junto a dicho botón. Esto provoca que Visual Studio muestre un mensaje de que descargará e instalará archivos adicionales (y pedirá cierre de Visual Studio durante el proceso). Después que se completa puedes reiniciar Visual Studio y pasar por este proceso de nuevo, el ejemplo de OpenFrameworks ahora debe compilar y ejecutar.

Las nuevas aplicaciones deben ir a \ apps \ myApps en la carpeta openFrameworks.

Linux: Instalación de qtcreator, Eclipse como IDE.

Desde la versión 0.9.0 Qt creator es el IDE recomendado. Una vez instalado. Puede instalar siguiendo esta guía de instalación (en inglés). El complemento Qt Creator para openFrameworks que viene con la descarga de OF para Linux, y puede ejecutar el script install_template.sh en scripts / qtcreator y así se instalará todo para usted. La versión actual de openFrameworks (0.9.8) necesita qtcreator 4.1.0.

También puede usar Eclipse un IDE de código abierto de IBM, instálalo donde quieras.Eclipse es muy potente, sin embargo es complejo y un poco pesado. Ver la guía de instalación Eclipse (en inglés)

Ambos IDEs tienen plugins que permiten crear nuevos proyectos, importar los existentes, agregar addons…

En ocasiones, antes de poder usar OF en Linux necesitará ejecutar un par de scripts para instalar algunas dependencias y compilar tanto la biblioteca OF como el generador de proyecto.

En primer lugar, necesitará ejecutar el script install_dependencies.sh para su distribución que se encuentra en

scripts/linux/distro_name/install_dependencies.sh

Por ejemplo, si está utilizando Ubuntu, abra una nueva consola e ingrese:

cd OF/scripts/linux/ubuntu
sudo ./install_dependencies.sh

A continuación, si desea utilizar algunos formatos como mp3, tendrá que ejecutar la secuencia de comandos install_codecs: está en la misma carpeta y se ejecuta de la misma manera que la de install_dependencies.

El código fuente OF viene sin compilar por lo que la primera vez que compila un ejemplo tendría que compilar también OF.

cd OF/scripts/linux
./compileOF.sh -j3

-j3 le dice al script que use 3 CPUs para compilar. Puede especificar tantas como desee, pero se recomienda utilizar el número de núcleos en su computadora o menos.

Con esto ya puede entrar en cualquiera de las carpetas de ejemplos y compilar los ejemplos con make:

cd OF/examples/graphics/polygonExample
make
make Run

Si desea instalar el generador de proyectos, una herramienta que permite crear y actualizar un proyecto de OF, tendrá que ejecutar un último script:

cd OF/scripts/linux
./compilePG.sh

Probar instalación OpenFrameworks + IDE

Encontrar el paquete descargado de la página de openFrameworks y descomprimirla. Esta será la carpeta raíz de la instalación de openFrameworks. Puedes colocar la carpeta raíz oF en cualquier lugar ya que todo nuestro código estará auto contenido en una carpeta. Si descargas otra versión de openFrameworks, debe permanecer en su propia carpeta.
Para probar la instalación vamos a compilar y ejecutar algunos ejemplos de OpenFrameworks. Para ello, ir al directorio
\apps\examples en la carpeta Open Frameworks y abrir un ejemplo.

Para Visual Studio, elegir file – open – project/solution y abrir el archivo .vcxproj y luego F5 (Start Debugging) o el botón “play” en la barra de herramientas. Asegurarse que hemos abierto el archivo .sln. Localizar la opción run without debugging option, que puedes añadir al menu toolbar en la personalización de la IDE.

Para XCode, abrir el proyecto .xcodeproj y presionar el botón similar a “play”. Asegurar cambiar el esquema de OpenFrameworks a el nombre de nuestro proyecto – debug, tal como indica la siguiente imagen.

Experimentar con los ejemplos de openFrameworks

Dentro de la carpeta openFrameworks encontrarás varias carpetas: ir a ejemplos y vamos a intentar compilar ejemplos / graphics / graphicsExample (o similar). Si estás en OS X, haz clic en el graphicsExample.xcodeproj. Si estás utilizando Visual Studio, elija el archivo “.sln”. En Code :: Blocks, elija el archivo “.workspace”.

Ahora el IDE debe abrir y cargar este ejemplo. Localizar el botón “Run” (Ejecutar) o la opción del menú y haga clic en él. El ejemplo debería compilar, lo que podría tardar un tiempo, esto sólo sucederá la primera vez)

Si todo salió bien mostrará una nueva ventana y el ejemplo que acabamos de compilar. Si este no es el caso primero debemos comprobar haber cumplido correctamente los pasos de instalación para cada IDE y en segundo lugar, tener seleccionado el esquema de compilación correcto – ‘NombredeProyecto’ Debug ó ‘NombredeProyecto’ Release – en el menú desplegable inmediatamente a la derecha del botón “Run”. Por último recomendamos buscar ayuda copiando literalmente los mensajes que aparecen en nuestra consola del IDE.

Estructura de carpetas

Además de las carpetas más importantes descritas a continuación, dentro de la carpeta raíz de oF encontrarás varias otras carpetas.

Addons
La carpeta “addons” contendrá los complementos, piezas adicionales de código que amplían las funcionalidades de OF. Los complementos “básicos”, ya vienen incluidos en la descarga. También puedes ir a ofxAddons donde encontrarás una enorme colección de complementos adicionales de la comunidad.

Ejemplos
Ordenados por tema, pueden ser un punto de partida para desarrollar aplicaciones similares.

Libs
Bibliotecas que openFrameworks utiliza para compilar los proyectos.

Project Generator
Generador de proyectos

Aplicaciones
Esta es la carpeta donde se colocan los archivos de proyecto al hacer nuevos proyectos. La descarga actual contiene la carpeta denominada “myApps” dentro de “apps y allí se alojarán los proyectos creados via Project Generator.

Fundamentos Programación C++

sesion2-ofx-kin-4

sesion2-ofx-kin-3

sesion2-ofx-kin-5

sesion2-ofx-kin-6

sesion2-ofx-kin-7

sesion2-ofx-kin-9sesion2-ofx-kin-10sesion2-ofx-kin-11

Visión artificial

Adquisición imagen con videocámaras

ofx kinect

 

Adquisición imagen con Kinect
sp-kinect-img-672x372
El dispositivo cuenta con una cámara RGB, un sensor de profundidad, y un procesador que ejecuta el software privativo de PrimeSense. El sensor de profundidad es un proyector de infrarrojos combinado con un sensor CMOS monocromo que permite ver en cualquier condición de luz ambiental. La profundidad de captura va de 0.7 a 6 metros. La información es recogida a 30 frames por segundo en una resolución de 640 por 480px.
Algunas referencias relevantes

Algunos de los flujos de trabajo de visión por computadora más comunes se han encapsulado en aplicaciones que pueden detectar las cosas y transmitir los resultados via OSC a su aplicación openFrameworks.

  • Toolkit for Sensing People in Spaces (TSPS): Kit de Herramientas para Detectar Personas en Espacios
  • Community Core Vision: conjunto de herramientas completo para una amplia gama de tareas de seguimiento.
  • FaceOSC: Una aplicación que rastrea las caras (y las partes de la cara, como ojos y narices) en video, y transmite estos datos sobre OSC.
  • Reactivision TUIO:Un sistema que utiliza marcadores fiduciales para rastrear las posiciones y orientaciones de objetos, y transmite estos datos sobre OSC.
  • EyeOSC (.zip): Un eyetracker experimental, basado en la cámara web que transmite el punto de fijación del espectador sobre la OSC.
  • Synapse for Kinect: Un tracker de esqueleto basado en Kinect con OSC.
  • DesignIO kinectArmTracker: Una aplicación OSC para el seguimiento de los movimientos de los brazos con el Kinect.
  • OCR-OSC reconocimiento óptico de caracteres (OCR) en secuencias de vídeo.

Sesion4-ofx-kin-4

 

Sesion4-ofx-kin-5

ofxCv

ofxcv

fxcvv

 

ofxKinect

Sesion6-ofx-kin

 

ofxOpenNI

Descargar e instalar en carpeta addons ofxOpenNI

Captura de pantalla 2017-05-02 a las 21.26.19


Macintosh OSX

1.- Copiar ofxOpenNI en la carpeta addonsSesion7-ofx-kin

2.- Duplicar un proyecto vacío o crear uno nuevo

cop

3.- Reemplazar los contenidos de src

4.- Copiar toda la carpeta ‘data’ desde el proyecto ejemplo del addon ‘ofxOpenNI’ a tu carpeta ‘bin’ en tu proyecto

( Si la carpeta no está presente:

  • En Xcode hacer un nuevo grupo llamado ‘ofxOpenNI’ si no existe en ‘Addons’ click -derecho ‘Addons’, selección Add->New Group.
  • Arrastrar ‘src’ e ‘include’ desde ofxOpenNI en el directorio addons de Ofx al grupo ‘ofxOpenNI’ de Xcode … )

 

Sesion7-ofx-kin-2

5.- Limpiar, reconstruir via Project Generator. Añadir addons.

limpiar, reconstruir

 

6.- En Xcode Faltan LIB, SRC, INCLUDE dentro de addons/ofxAddons en la estructura del proyecto

Xcode Projecte

7.- Obtendremos esta estructura

Captura de pantalla 2017-04-28 a las 16.08.20

8.- Añadir un Library Search Path en Build SettingsLibrary Search Path

9.- Arrastrar las nuevas librerías a “Linked Frameworks and Libraries”

Link

Debe quedar así

Captura de pantalla 2017-04-28 a las 16.02.54

Build & Run….

Kinect Mano

 

Windows

 

1.- Instalar openNI desde http://www.openni.org/Downloads/OpenNIModules.aspx ó desde http://github.com/openni.

2.- Instalar NITE desde OPENNI SDK ó desde http://www.openni.org/Downloads/OpenNIModules.aspx.
3.- Instalar SensorKinect drivers https://github.com/avin2/SensorKinect

4.-  Copiar carpeta ‘example’ a tu Ofx/apps/MyApps o similar
Copiar los contenidos de ‘ofxOpenNI/win/copy_to_data_openni_path’ a una carpeta ubicada en ‘bin/data/openni’ en tu proyecto ejemplo
Renombrar o duplicar por ejemplo src-UserAndCloud-Medium a únicamente src

5.- Limpiar, reconstruir via Project Generator

 

-kin-2

 

Captura de pantalla 2017-04-28 a las 16.37.27

 

Add-ons para experimentar

 

 

 

Aprender más

Body, Space & Tehcnology Journal de la universidad de Brunel
– El sitio web del curso Tecnologías de la imagen. Facultad de Bellas Artes Universidad Politécnica de Valencia
– Mapa conceptual de la historia del Cine-expandido
– Solución a error unsigned char * getPixels() en C++Ofx
– Addons recomendados: ofxControlPanel
– Más de 1000 addons disponibles openFrameworks
-El libro Pensar en C++: «Thinking in C++» en castellano:
Volumen 1 (versión HTML | versión PDF)
Volumen 2 (versión HTML | versión PDF)
– El libro Accelerated C++ Practical Programming by Example de Andrew Koenig y Barbara Moo.
– El libro Apuntes de Procesamiento Digital de Imágenes de José Ramón Mejía Vilet
Vídeo – Guías para resolver diversos aspectos del trabajo con OFx
– La referencia oficial de C++ cplusplus.com y un tutorial en inglés cplusplus.com tutorial
– La performance computacional comparado entre Java y C
– Descargar OpenGL Extensions Viewer para probar compatibilidad de la tarjeta gráfica con openGL.

 

 

Tags: , , , , , , , , ,

11 Comentarios

AlexPublicado  3:31 pm - abr 19, 2017

Muchisimas gracias, me ha sido de mucha ayuda el artículo. Un saludo

Maria JoséPublicado  10:57 am - abr 20, 2017

Me quedé con ganas de participar en la edición de abril :) Igual muchas gracias por publicar estos contenidos! Siguiendo vuestra guía ya tengo el Xcode instalado y he podido hacer funcionar un ejemplo sin errores pero no veo los resultados ¿que puede estar sucediendo?

    lablibertarioPublicado  11:04 am - abr 20, 2017

    Probar cambiar el esquema Xcode de Openframeworks a “nombre de tu proyecto” – debug o release, en el panel desplegable situado a inmediatamente a la derecha del botón Run.

JosepPublicado  5:14 pm - abr 20, 2017

En los textos de debate, el de Mariano Sardón está enlazado al mismo PDF de Claudia Gianetti,

Un Saludo!

Jaime DyanganiPublicado  1:22 pm - abr 24, 2017

Buenas, Soy jaime (Jimmie, para “los amigos”), estoy inscrito en el taller de sistemas interactivos, vision artificial, C++ y openframeworks… Esta semana no podré asistir al curso debido a un viaje personal a Londres que me he visto obligado a realizar. Por favor no piensen que he perdido interes en el curso (todo lo contrario!!). De echo, este fin de semana he estado analizando algunos de los ejemplos que están incluidos en la librería de openframeworks y creo que a grandes rasgos puedo entender la mecánica general y la distribución de información en los archivos. estos días realizaré ejercicios para poner en practica los fundamentos y seguiré el avance del curso desde la pagina del mismo.

Por cierto, he leido los textos que nos recomendasteis y es muy interesante la visión del ser desligado del cuerpo material y de como la percepción aumentada a través agentes externos (físicos o virtuales) podrían considerarse como argumento racional, una via para transcender a una nueva noción de la humanidad.

Espero ansioso regresar a Barcelona para continuar con esta formación y poder pasar algunas ideas a la practica…

Adjunto alguna referencias
https://www.youtube.com/watch?v=YERtJ-5wlhM
https://www.youtube.com/watch?v=Q4ocIIBTqLs

Te adjunto el portfolio de nuestro equipo “DOSBCNstudio”:
https://www.behance.net/dosbcn

Asi mismo, tambien te dejo dos enlaces a mis areas de interes que me gustaría conectar a través del contenido del taller:
https://www.facebook.com/DigtalTranscendence/
http://globalstreetart.com/afro-zu

Un saludo y disculpen la ausencia en estos días…

carla antunezPublicado  4:30 pm - abr 26, 2017

Muchas gracias por vuestro curso, realmente me ayuda a seguir mi aprendizaje. Seguí las instrucciones de instalación para Adafruit para instalar openFrameworks en mi RPi3 y se construye sin errores. Puedo construir una serie de ejemplos y ejecutarlos. Eso todo funciona. El problema es cuando intento construir el código de la aplicación en sí y obtengo los siguientes 2 errores de los que he intentado buscar sin éxito
../../../libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk:200: recipe for target ‘obj/linuxarmv6l/Release/src/VideoSource.o’ failed
make[1]: *** [obj/linuxarmv6l/Release/src/VideoSource.o] Error 1
make[1]: Leaving directory ‘/home/pi/openFrameworks/apps/myApps/creepyportrait’
../../../libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk:125: recipe for target ‘Release’ failed
make: *** [Release] Error 2

danotikaPublicado  3:33 pm - may 16, 2017

Gracias por esta guía:
Estoy probando el ejemplo de entrada MIDI con OF 0.98, en OS X 10.12.2.
Tengo un controlador midi conectado, y estoy recibiendo con éxito los cambios de control midi en otras aplicaciones.

Estos son los pasos que seguí:

He utilizado el generador de proyecto para hacer un nuevo proyecto que incluye el ofxMIDI
He reemplazado los tres archivos de origen (main.cpp, ofApp.h, ofApp.cpp) con los del ejemplo
He construido con éxito el proyecto no veo errores pero no hay valores.
¿qué puedo ser?

PIeGUIPublicado  10:46 am - may 18, 2017

enhorabuena chicos, una de los mejores tutoriales hasta el momento

Danielle SPublicado  11:35 am - may 31, 2017

Solo aprovechar la oportunidad de felicitaros por el buen trabajo y agradeceros este artículo que me ha hecho la tarde más feliz ayer cuando por fin pude ver mi silueta capturada por la kinect en la pantalla del ordenador. ¡Gracias! El proceso me ha dejado un buen sabor de boca y lo recomiendo a pesar de necesitar muchísmas horas y paciencia…

Larry HPublicado  8:01 pm - jul 1, 2017

He seguido estas instrucciones para instalar libfreenect 2 en mi mac os x: https://github.com/OpenKinect/libfreenect2

Sin embargo en el último paso necesito probar NiViewer y no encuentro el programa en el terminal

-bash: NiViewer: command not found

He podido encontrarlo usando este modo alternativo sin embargo aún no funciona bien, aquí la consola:

cd `brew –prefix`/share/openni2/tools
./NiViewer

[Info] [Freenect2Impl] found valid Kinect v2 @20:17 with serial 000394562647
[Info] [Freenect2Impl] found 1 devices
[Info] [Freenect2DeviceImpl] opening…
[Info] [Freenect2DeviceImpl] transfer pool sizes rgb: 20*16384 ir: 4*128*33792
[Info] [Freenect2DeviceImpl] opened
[Info] [Freenect2DeviceImpl] starting…
[Info] [Freenect2DeviceImpl] submitting rgb transfers…
[Info] [Freenect2DeviceImpl] submitting depth transfers…
[Info] [RgbPacketStreamParser] packetsize or sequence doesn’t match!
[Info] [Freenect2DeviceImpl] started
2016-09-07 11:33:40.667 NiViewer[4903:283276] GLUT Warning: glutInit being called a second time.
[Info] [VTRgbPacketProcessor] avg. time: 15.0893ms -> ~66.272Hz
[Info] [VTRgbPacketProcessor] avg. time: 15.0481ms -> ~66.4535Hz
[Info] [VTRgbPacketProcessor] avg. time: 15.1377ms -> ~66.0602Hz
[Info] [DepthPacketStreamParser] 342 packets were lost
Segmentation fault: 11

Deja un comentario

Redes