Qué puede hacerse Fundamentos Primeros ejemplos Primer Juego.

Post on 02-Apr-2015

109 views 0 download

Transcript of Qué puede hacerse Fundamentos Primeros ejemplos Primer Juego.

Qué puede hacerse Fundamentos Primeros ejemplos Primer Juego

Mis cosas: CityFirefliesMis cosas: CityFireflies

http://cityfireflies.com/ https://vimeo.com/25071870

Mis cosas: Sonic SkateMis cosas: Sonic Skate

De otros: El primero. De otros: El primero. VideoplaceVideoplace

http://youtu.be/dmmxVA5xhuo?t=1m30s Myron Krueger, 1975

Messa di VoiceMessa di Voice

http://www.tmema.org/messa/messa.html

https://www.youtube.com/watch?v=STRMcmj-gHc

Golan Levin and Zach Lieberman

with Jaap Blonk and Joan La Barbara

levelHeadlevelHead

https://www.youtube.com/watch?v=UJYKSFANuaQ Julian Oliver

En el navegador: En el navegador: justareflektor.com justareflektor.com

https://www.justareflektor.comVincent Morisset and

Aaron Koblin

HAND FROM ABOVEHAND FROM ABOVE

http://www.creativeapplications.net/openframeworks/hand-from-above-openframeworks/ Vincent Morisset and

Aaron Koblin

.

Nuestro problema: Una cámara nos da un array de pixels, nada de información de lo que hay en ellos

¿Como identificar qué se está viendo?

Técnicas BásicasTécnicas Básicas

Un uso habitual es preparar la imagen para posteriores procesos.

.

Background SustractionBackground Sustraction

Se utiliza para detectar variaciones en una imagen respecto a otra de referencia. Simplemente se restan los valores de alguna caracteristica de cada pixel entre una imagen y otra

Fuente: http://se.inf.ethz.ch/courses/2013b_fall/rpl/lectures/10_RobotPerception.pdf

BlobsBlobs

Regiones con una caracteristica constante en una imagen

http://golancourses.net/2012spring/03/29/interact-reactive-environments/

Tracking de BlobsTracking de Blobs

Seguimiento del movimiento de las regiones a lo largo de una secuencia de imagen: Una mano que se mueve, una persona que anda, un coche que pasa

http://golancourses.net/2012spring/03/29/interact-reactive-environments/

Abriendo la cámaraAbriendo la cámara

import processing.video.*;

void setup() { video = new Capture(this, width, height);video.start();

void draw(){ if (cam.available() == true) { cam.read(); } image(cam, 0, 0);

Código de ejemplolibraries -> video-> capture -> GettingStartedCapture

Leyendo pixels de la Leyendo pixels de la imagenimagen

Código de ejemplolibraries -> video-> capture -> frameDifferencing(sobre la extraccion de color): http://processing.org/reference/red_.htmlBG sustraction

color pink = color(255, 102, 204);loadPixels();for (int i = 0; i < (width*height/2)-width/2; i++) { pixels[i] = pink;}updatePixels();

Pixels de la pantalla:

video.loadPixels(); // Make its pixels[] array available

Pixels de la pantalla:

Un filtroUn filtro

loadPixels(); for (int i = 0; i < numPixels; i++) { pixelBrightness = brightness(video.pixels[i]); if (pixelBrightness > threshold) { // If the pixel is brighter than the pixels[i] = white; // threshold value, make it white } else { // Otherwise, pixels[i] = black; // make it black } } updatePixels(); Código de ejemplo

libraries -> video-> capture ->Brightness threshold

Siguiendo el pixel mas Siguiendo el pixel mas brillantebrillante

Código de ejemplolibraries -> video-> capture ->Brightness Tracking

float pixelBrightness = brightness(pixelValue); // If that value is brighter than any previous, then store the // brightness of that pixel, as well as its (x,y) location if (pixelBrightness > brightestValue) { brightestValue = pixelBrightness; brightestY = y; brightestX = x; }

EN ESTE TIPO DE APLICACIONES ES MUY IMPORTANTE CONFIGURAR BIEN EL ENTORNO

Un primer inicio de Un primer inicio de “juego”“juego”

Instalando opencvInstalando opencvSketch->import library->add library…

Opencv for processing by Greg Borenstein