Efectos en tiempo real con processing y opencv


En estos días he tenido que recordar algunos conceptos del trabajo con processing (processing.org) debido que estoy  formando un grupo de trabajo con jóvenes de la Universidad Nacional “Santiago Antúnez de Mayolo”. Cuyo objetivo es desarrollar aplicaciones de realidad aumentada dirigido a la Educación y el Marketing.

Y para desempolvar mis conocimientos  se me ocurrió demostrar un efecto de explosión de una figura, pero en este caso se captura en tiempo real el flujo de video y se le aplica un efecto sobre los pixeles deformándolos en el espacio 3D. Sin duda processing es el lenguaje más fácil para hacer este efecto y lo comparto con ustedes, espero que puedan mejorarlo y postear alguna aporte más.

import hypermedia.video.*;
PImage img; // The source image
PImage movementImg;
int cellsize = 2; // Dimensions of each cell in the grid
int columns, rows; // Number of columns and rows in our system
OpenCV cam;

void setup() {
size(800,600,P3D);
cam = new OpenCV( this );
cam.capture( 600, 480 );

movementImg = createImage(600, 480,RGB);
columns = movementImg.width/ cellsize; // Calculate # of columns
rows = movementImg.height / cellsize; // Calculate # of rows
}

void draw() {
cam.read();
cam.flip(OpenCV.FLIP_HORIZONTAL);
movementImg = cam.image();

for ( int i = 0; i < columns; i++) {
// Begin loop for rows
for ( int j = 0; j < rows; j++) {
int x = i*cellsize + cellsize/2; // x position
int y = j*cellsize + cellsize/2; // y position
int loc = x + y*movementImg.width; // Pixel array location

color c = movementImg.pixels[loc];
// Calculate a z position as a function of mouseX and pixel brightness
float z = (mouseX / float(width)) * brightness(movementImg.pixels[loc]) – 20.0;
// Translate to the location, set fill and stroke, and draw the rect
pushMatrix();
translate(x + 20, y + 10, z);
fill(c, 204);
noStroke();
rectMode(CENTER);
rect(0, 0, cellsize, cellsize);
popMatrix();

}
}

}

Aquí una demostración

Juan Cadillo

1 comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s