xxxxxxxxxx
71
//error control
var webcam = null;
var tracker = null;
var features = null; //list of face features
var mouth = [44, 61, 60, 59, 50, 58, 57, 56] ;
function setup() {
createCanvas(640, 480);
// create webcam
webcam = createCapture(VIDEO);
webcam.size(width, height);
webcam.hide(); //allows only one video screen
//connect face tracking to webcam
tracker = new clm.tracker();
tracker.init();
tracker.start(webcam.elt);
}
function draw() {
translate(width, 0); //correct mirror
scale(-1,1); //correct mirror
image(webcam, 0, 0);
features = tracker.getCurrentPosition();
if (features.length > 0) {
var leftEye = features[27];
var leftEyeX = leftEye[0];
var leftEyeY = leftEye[1];
fill(45, 33, 33); //white 255, 255, 255 //brown 45, 33, 33
stroke(0);
ellipse(leftEyeX, leftEyeY, 20, 20); //size of eye tracker
var rightEyeX = features[32][0];
var rightEyeY = features[32][1];
ellipse(rightEyeX, rightEyeY, 20, 20); //size of eye tracker
fill(255, 255, 255);
beginShape();
for (var i=0; i<mouth.length; i++){
var featuresIndex = mouth[i];
var x = features[featuresIndex][0];
var y = features[featuresIndex][1];
vertex (x,y);
}
endShape(CLOSE);
var faceCenterX = features[33][0];
var faceCenterY = features[33][1];
var faceWidth = features[14][0] - features[0][0];
var faceHeight = (features[7][1] - features[33][1])*1.7; // 1/2 face x 2
fill(245, 245, 33, 150 ); // emoji face colour, 150 of 255 transparency
noStroke();
ellipse(faceCenterX, faceCenterY, faceWidth, faceHeight);
}
}