/** * * Doing some stuff with video. */ import hypermedia.video.*; import java.awt.Rectangle; import de.bezier.data.sql.*; import java.util.Collections; import java.util.Random; import processing.video.*; Movie myMovie; OpenCV opencv; // ---- face tracking stuff ---- // last recognized data int x_pos = 0; int y_pos = 0; int w_face = 0; int h_face = 0; // to store face recognition data int MAX = 10; int[] x = new int[MAX]; int[] y = new int[MAX]; int[] w = new int[MAX]; int[] h = new int[MAX]; // for data smoothing int SAMPLES = 20; int PERSISTENCE=10; int curr=0; int lastface=0; int[] sx = new int[SAMPLES]; int[] sy = new int[SAMPLES]; int[] sw = new int[SAMPLES]; int[] sh = new int[SAMPLES]; PImage img; PImage blackimg; PImage frameimg; // SQL stuff MySQL msql; PFont font; // what table and what column to query in db // this determines what data is played back String table = "media"; String ftable = "videofaces"; String column = "name"; // vars holding response most recent query String data= ""; String path=""; String fname=""; String filetype=""; int filenum=257; int facenum=0; int frame=0; int id=0; float moviepos=776.0; float lasttime=0; boolean newframe=false; // ---- interactivity ---- // // timing int last=0; boolean paused=false; void setup() { //size(1280, 720, P2D); size(screen.width, screen.height); background(0); strokeWeight(2); noFill(); // Font and text drawing setup font = loadFont("HelveticaNeue-48.vlw"); textAlign(LEFT); // textAlign(CENTER,CENTER); rectMode(CORNER); fill(255); textFont(font, 24); // Load and play the video in a loop myMovie = new Movie(this, savePath("/Volumes/tera 4/Assets/Video/twomey movie/Untitled10")); myMovie.loop(); myMovie.read(); myMovie.jump(moviepos); myMovie.speed(0.05); // debug println(myMovie.width); println(myMovie.height); opencv = new OpenCV( this ); opencv.allocate( myMovie.width, myMovie.height ); // image buffer //opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT ); // load detection description, here-> front face detection : "haarcascade_frontalface_alt.xml" // opencv.cascade(OpenCV.CASCADE_PROFILEFACE); opencv.cascade(OpenCV.CASCADE_PROFILEFACE); blackimg = createImage(myMovie.width, myMovie.height, RGB); blackimg.loadPixels(); for (int i = 0; i < blackimg.pixels.length; i++) { blackimg.pixels[i] = color(0, 0, 0); } last=-1000; initializeAvg(); } void fillAvg(int x, int y, int w, int h) { for(int i=0;i0) { // println(" "+count+" faces"); // data smoothing curr++; if(curr>=SAMPLES)curr=0; if(lastface==0) fillAvg(faces[0].x, faces[0].y, faces[0].width, faces[0].height); sx[curr]=faces[0].x; sy[curr]=faces[0].y; sw[curr]=faces[0].width; sh[curr]=faces[0].height; stroke(0, 0, 255); drawAvg(); stroke(255,0,0); // detected faces for( int i=0; i0) { stroke(0, 0, 255); //storeFaceInDB(filenum); drawAvg(); stroke(255,0,0); lastface--; } } } void saveSnapShot() { //myMovie.save(savePath("/Users/rtwomey/Desktop/images/"+vidName)); save("snapshot_"+str(myMovie.time())); } void saveFace() { float ax, ay, aw, ah; ax=0; ay=0; aw=0; ah=0; for(int i=0;i