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

Teoría

 

 

 

OpenFrameworks

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

maluse

 

Instalación IDE

Desarrollaremos nuestros proyectos escribiendo el código, construyendo y ejecutando nuestros programas usando un IDE Integrated Development Environment.

Sigue esta guía para Instalar un IDE adecuado a tu sistema operativo O.S.

 

Generalmente la interfaz de un IDE tiene esta distribución:

INTERFACE

Guía de trabajo

1. Referencias de código ( )

 

 

 

 

 

 

 

2. Estructura de un proyecto en openFrameworks

EXE-_ArteCódigoC++ 050218 (7)
main.cpp Es el primer elemento en ser ejecutado en nuestro programa. Allí podemos encontrar las dimensiones de la ventana que ocupará nuestra aplicación en ejecución.
4:3 640 X 480
4:3 800 x 600
4:3 1024 x 768
16:9 1280 X 720
SD-NTSC 720 x 480 p.c. 786 X 576  872 x 480
PAL 720 X 576   p.c.768 x 576
4:3 1600 x 1200
16:9 1600 x 900
FHD 16:9 1920 x 1080
2K 2048 x 1080
4K 4096 x 2160
8K 8192 x 4608
ofApp.h alberga las declaraciones de las funciones de nuestro programa.
ofApp.cpp contiene el desarrollo de dichas funciones.

ofApp.cpp y ofApp.h son partes inter conectadas de nuestro proyecto.

Una vez damos al botón “Run” las funciones se ejecutan esencialmente en esta secuencia:
EXE-_ArteCódigoC++ 050218 (8)
El origen de coordenadas se sitúa en la esquina superior izquierda de la ventana de nuestra aplicación.
EXE-_ArteCódigoC++ 050218 (9)

A través de las abstracciones de C ++ de Openframeworks podemos conocer y definir todos los aspectos del comportamiento de nuestro programa. Un ejemplo de estas abstracciones OF es ofGetWindowWidth () o ofGetScreenHeight () para conocer el ancho o el alto de nuestras pantallas.

 

Documentación de Openframeworks
Documentación de Openframeworks

Antes de seguir, a continuación revisaremos la sintaxis general del lenguaje C++.

 

 

3. Sintaxis General C++

sesion2-ofx-kin-4

sesion2-ofx-kin-3

sesion2-ofx-kin-5

sesion2-ofx-kin-6

sesion2-ofx-kin-7

sesion2-ofx-kin-9

 

 

 

 Mac OSX Camera Troubleshooting

  1. Force Quit VDCAssistant y AppleCameraAssistant

 

VDCAssistant y AppleCameraAssistant son programas que se ejecutan en segundo plano cada vez que utiliza la cámara incorporada de su Mac. Las complicaciones con estos procesos pueden afectar cualquier cantidad de aplicaciones que puedan acceder a la cámara, como FaceTime, iMovie, Messages y Skype.

 

A. Salga de VDCAssistant y AppleCameraAssistant.
B. Cierre cualquier aplicación que tenga acceso a su cámara.
C. Haga clic en el icono de Spotlight Search, busque Terminal y presione Enter para abrirlo.
D. Escribir: sudo killall VDCAssistant y presiona Enter. Escriba su contraseña y presione Enter.
E. Escriba: sudo killall AppleCameraAssistant y presiona Enter.

Una vez que haya detenido ambos procesos, inicie una aplicación que use la cámara incorporada y vea si el problema está resuelto.

 

     2. Ajuste la configuración de su cámara


No hay una sección de cámara en Preferencias del sistema, por lo que no puede cambiar la configuración de la cámara directamente. Sin embargo, la mayoría de las aplicaciones que usan la cámara incorporada tienen configuraciones de cámara ajustables. FaceTime y Skype te permiten especificar qué cámara deseas usar para las videollamadas, así que asegúrate de que la cámara incorporada esté seleccionada.

 

        3. Actualización de seguridad disponible para su Mac.


Apple incluye importantes correcciones de errores en cada versión de compilación, por lo que es importante actualizar su software a la última versión disponible. Lo más probable es que hayan identificado la falla de su cámara y la hayan resuelto en la actualización más reciente.

 

     4. Reinicie su computadora
Otra forma rápida de resolver problemas de la cámara es reiniciar tu Mac. Asegúrese de apagar por completo su Mac en lugar de elegir la opción Reiniciar. Al reiniciar su computadora, se cerrará la sesión y se apagará temporalmente su Mac, pero se dejará intacta la RAM. Por otro lado, al apagar su Mac, se borrará la memoria RAM y finalizará todos los procesos, incluidos los que podrían interferir con su cámara.

5. Conocer y Coordinar la resolución de la cámara usando CamTwist

Captura de pantalla 2018-07-05 a las 1.42.53

6. Macam USB cameras
7. En el programa de openframeworks, ofApp.cpp -> setup(){} añadir:

vector<ofVideoDevice> devices = cam.listDevices();

for(int i = 0; i < devices.size(); i++){

if(devices[i].bAvailable){

ofLogNotice() << devices[i].id << “: ” << devices[i].deviceName;

}

else{

ofLogNotice() << devices[i].id << “: ” << devices[i].deviceName << ” -no disponible “;

}

}

//elección número ID del dispositivo  y el FrameRate

cam.setDeviceID(1);

cam.setDesiredFrameRate(60);

 

 

 

libertar.io

Una vez añadido el código, build/run y observar la consola. Allí reporta resolución de cámara y número de dispositivo.

Libusb para Windows Kinect

  • Descarga Zadiq app: http://zadig.akeo.ie  y abrir como administrador
  • Conectar Kinect
  • Ir a Device Manager en Windows
  • En Zadiq click en “list all devices” y “advanced mode” en el menu opciones.
  • Click en el ícono de folder al lado del driver y apuntar al folder openFrameworks\addons\ofxKinect\libs\libfreenect\platform\windows\inf
  • Repetir estos pasos para Xbox motor, Xbox camera y Xbox audio:
    -Seleccionar Xbox Motor NUI (luego camera y audio ).
    -En la lista de drivers que se reemplazarán (una lista a la derecha de la flecha VERDE) selecciona cada vez “libusb-win32 (v1.2.6.0)”
    -Click “Reinstall driver”

ice_screenshot_20180701-175056

 

 

 

OfxOpenNI

Empezamos descargando ofxOpenNI Development Branch.
Esta es una interfaz para la librería  openNI + NITE + SensorKinect. Comprobado en Mac OSX (10.6.8), Linux (Ubuntu 10.10 64 & 32), Windows 7 (VS2010 y Codeblocks).Creamos un proyecto nuevo, puede ser una copia de un empty project.

2018-vision (1)
Actualizamos o reemplazamos los contenidos de src con nuestro código.

 

2018-vision (2)

Desde ofxOpenNI en la carpeta addons
Copiar lib desde ‘ofxOpenNI/mac/copy_to_data_openni_path’ a la carpeta ‘bin/data/openni’ en tu proyecto.

Además debes copiar config y el Verdana.ttf del proyecto de ejemplo en la carpeta de complemento ofxOpenNI.

2018-vision (3)


Desde ofxOpenNI en la carpeta addons, copiar una carpeta src de un ejemplo. Renombrar o duplicar por ejemplo src-UserAndCloud-Medium a únicamente src.
Limpiar, reconstruir via Project Generator

2018-vision (4)

En Xcode hacemos un nuevo grupo llamado ‘ofxOpenNI’ bajo ‘Addons’ (click derecho o control click en el grupo ‘Addons’, seleccionamos Add->New Group). Arrastramos ‘src’ e ‘include’ desde ofxOpenNI en la carpeta addons en el grupo ofxOpenNI que acabas de crear en Xcode.

Arrastramos la carpeta lib desde bin/data/openni al grupo ofxOpenNI.

Añadimos #include “ofxOpenNI.h” en ofApp.h,

 

 

2018-vision (6)

Incluimos un nuevo Library Search Path

2018-vision (7)

Y arrastramos 14 elementos desde ofxOpenNI/lib a “Linked Frameworks and Libraries”

2018-vision (8)

Terminamos afinando y reemplazando funciones obsoletas.

2018-vision (9)

 

 

 

ofxKinectForWindows2

ofxKinectForWindows2 y prestar atención en concreto al branch 0.9.0

Primero instale el Windows SDK 2.0 y reiniciar después de instalarlo.

Pruebe los ejemplos para ver si se compilan y se ejecutan.

 

 

 

ofxFaceTracker

Primero descargar ofxCv (https://github.com/kylemcdonald/ofxCv/tree/stable) y ofxFaceTracker

Copia la carpeta libs/FaceTracker/model/ en   example-*/bin/data/model/ de cada ejemplo.

Usa el OF project generator, construye y ejecuta los ejemplos. Si aparece Assertion failed: s.is_open() debes colocar los archivos de modelos en la carpeta adecuada.

Si quieres usar ofxFaceTracker para tareas de sustitución de rostros mira FaceSubstitution.

 

 

 

 

 

 

 

 

 

 

INTSYS718

 

 

 

Add-ons

 

 

 

Referencias

Teoría
Software y Hardware

 

 

Tags: , , , , , , , , ,

17 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

Ariel vrPublicado  5:24 pm - mar 21, 2018

Muy buenas chicos, simplemente agradecer la claridad de la guía para OpenFrameworks realmente he buscado en toda la web y la vuestra es la mejor y más sencilla de comprender. GRACIAS MIL!!!

JosePublicado  12:03 pm - mar 28, 2018

Acabo de descubrir su página gracias a este post y ya los tengo guardados. Enhorabuena!!!

Anna MaríaPublicado  9:57 am - may 9, 2018

Excelente, interesante, importante. Ha sido claro, práctico y Útil no sólo para trabajar en un proyecto escénico, sino para más tipos de creatividad y hasta aplicaciones en productos y servicios que podré ofrecer. La idea de proporcionarnos información histórica y analizar cada caso de estudio con tal nivel de profundidad me ha parecido muy buena y útil porque te permite escuchar y atender a la explicación sin agobios y poder recordar lo aprendido. He quedado muy contenta con el curso. La organización que se ha realizado me ha parecido correcta e idonea, el profesor ha explicado claramente los contenidos del curso y a su vez se ha apoyado en ejemplos prácticos haciendo mas asequibles los contenidos del curso. Muy dinámico. La atención ha sido muy buena en todo momento.

WilliamPublicado  10:08 am - jun 27, 2018

Moltes gracies per l’ explicacio. No se si jo anava una mica despistat o que pero no trobava com es feia el tema Kinect 😛 Ara evidentment ja ho tinc del tot clar com es fa 😉

xmodgames scr888Publicado  8:26 pm - jul 3, 2018

I really appreciate your content, Your article has truly clarified things. I’mgoing to bookmark ylur website and keep checking for new information

futureXPublicado  2:02 pm - oct 16, 2018

Hola, muchas gracias aprendo muchísimo con ustedes!!!!
No he podido hacer funcionar esto para seleccionar un color de la webcam, gracias por su ayuda!

void ofApp::mousePressed(int x, int y, int button) {
//calcular valor x,y del raton en imagen
int mx = x % w;
int my = y % h;
//obtener valor hue en la posición del click ratón
Tonalidad = hue.getPixels()[my*w+mx];

}

Deja un comentario

Redes