Red dot is an interactive performance, combining new media technology with improvisation and exploring movement as a means of producing rhythm. Visually, it is inspired by the work of the conceptual artist John Baldessari and the way he covers people' s faces through the use of monochromatic circles. Conceptually, it refers to the loss of the subject' s identity in favor of form and how movement can translate into sound in order to create an audiovisual augmented environment, where the subject is the main component of the representation.

It was presented @Frown Tails in Athens, as part of the international contemporary art platform ReMap 3, on October 2011.

performers:
Andriani Vasilopoulou
Evi Terzi
Vasia Frantzeti

It was also presented @CAMP in Athens, as part of the collective art show Zootrope, on June 2012.

Thanx to Iraklis Vlachakis for helping me with the Pd-Extended patch ;D

performers:
Evi Terzi
Miranda Zisimopoulou

software:
Processing 1.5.1, OpenCV library, oscP5 library
Pd-Extended

Processing source code:

import hypermedia.video.*;
import java.awt.Rectangle;
// OSC set up
import oscP5.*;
import netP5.*;

OscP5 oscP5;
NetAddress myRemoteLocation;

OpenCV opencv;

// contrast/brightness values
int contrast_value = 0;
int brightness_value = 0;

void setup() {

size( screen.width, screen.height );
oscP5 = new OscP5(this,10000);
//myRemoteLocation = new NetAddress("192.168.200.30",12000);
myRemoteLocation = new NetAddress("localhost",10002) ;
opencv = new OpenCV( this );
opencv.capture( width, height ); // open video stream
opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT ); // load detection description, here-> front face detection : "haarcascade_frontalface_alt.xml"

// print usage
println( "Drag mouse on X-axis inside this sketch window to change contrast" );
println( "Drag mouse on Y-axis inside this sketch window to change brightness" );
}

public void stop() {
opencv.stop();
super.stop();
}

void draw() {
background (167) ;
// grab a new frame
// and convert to gray
opencv.read();
opencv.convert( GRAY );
opencv.contrast( contrast_value );
opencv.brightness( brightness_value );

// proceed detection
Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );

// display the image
image( opencv.image(), 0, 0, width, height);

// draw face area(s)
noFill();
stroke(255,0,0);
for( int i=0; i println (faces[i].x);
println (faces[i].y);
int padx = faces[i].x;
int pady = faces[i].y;
//color variante..
// fill (faces[i].x, faces[i].y, 255, 0);
fill (255,0,0);
ellipseMode (CORNER);
ellipse ( faces[i].x, faces[i].y, faces[i].width, faces[i].height );

/* create an osc bundle */
OscBundle myBundle = new OscBundle();
/* createa new osc message object */
OscMessage myMessage = new OscMessage("/padx");
myMessage.add(padx);
myBundle.add(myMessage);

myMessage.setAddrPattern("/pady");
myMessage.add(pady);
myBundle.add(myMessage);

myBundle.setTimetag(myBundle.now() + 10000);
/* send the osc bundle, containing 2 osc messages, to a remote location. */
oscP5.send(myBundle, myRemoteLocation);
}
}

/**
* Changes contrast/brigthness values
*/
void mouseDragged() {
contrast_value = (int) map( mouseX, 0, width, -128, 128 );
brightness_value = (int) map( mouseY, 0, width, -128, 128 );
}

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.