/** * * 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; SteppedMovie myMovie; Gaggle agents; // ---- face tracking stuff ---- PImage img; PImage frameimg; PFont font; int filenum=257; int facenum=0; int frame=0; int id=0; int startframe=67423; float moviepos=519.8; float lasttime=0; boolean newframe=false; // ---- interactivity ---- // // timing int last=0; boolean paused=false; //String DETECTION_CASCADE=OpenCV.CASCADE_FRONTALFACE_DEFAULT; String DETECTION_CASCADE=OpenCV.CASCADE_FRONTALFACE_ALT_TREE; //String DETECTION_CASCADE=OpenCV.CASCADE_PROFILEFACE; String inpath="/Volumes/Reservoir/Assets/Video"; String fname="abby gas station"; String outpath="/Users/rtwomey/Desktop/"+fname+"_"+DETECTION_CASCADE; 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, "/Volumes/Reservoir/Assets/Video/twomeymovie/Untitled10.mov"); // myMovie.loop(); // myMovie.read(); // myMovie.jump(moviepos); // myMovie.speed(0.05); println("opening file "+savePath(inpath+"/"+fname)); try { myMovie = new SteppedMovie(this, savePath(inpath+"/"+fname)); } finally { println("couldn't open"); }; myMovie.precalcFrameTimes(); myMovie.read(); println(myMovie.getFrameCount()); myMovie.gotoFrameNumber(startframe); // myMovie.loop(); // myMovie.jump(moviepos); // myMovie.speed(0.05); // debug println(myMovie.width); println(myMovie.height); agents = new Gaggle(this, myMovie.width, myMovie.height ); last=-1000; //initializeAvg(); } void doFaceTracking() { frame++; myMovie.loadPixels(); frameimg = new PImage(myMovie.width, myMovie.height, RGB); arraycopy(myMovie.pixels, frameimg.pixels); frameimg.updatePixels(); int count = agents.checkframe(frameimg); if(count>0) { println("time: "+str(myMovie.time())+", "+count+" faces"); } else { println(" no faces in frame."); } } void movieEvent(Movie myMovie) { // if(!paused) { // lasttime=myMovie.time(); // myMovie.read(); // newframe=true; // } } void draw() { if((!paused)) { // erase image and put curr video frame myMovie.read(); myMovie.stepForward(); if(myMovie.done()) { exit(); } else { background(0); image(myMovie, 0, 0); fill(64, 64, 64); text(myMovie.time()+" s\n"+myMovie.getCurrentFrameNumber()+"\n"+myMovie.getFrameCount()+" frames\n"+DETECTION_CASCADE, 50, myMovie.height+50); noFill(); doFaceTracking(); newframe=false; } agents.relax(); } } void saveSnapShot() { //myMovie.save(savePath("/Users/rtwomey/Desktop/images/"+vidName)); save("snapshot_"+str(myMovie.time())); } void mousePressed() { int fnum=round(float(mouseX)/float(width)*myMovie.getFrameCount()); println("jumping to frame "+fnum); myMovie.gotoFrameNumber(fnum); } void keyPressed() { if(key==' ') paused = (paused == true) ? false : true; if(key=='s') saveSnapShot(); } public void stop() { agents.stop(); super.stop(); }