xxxxxxxxxx
50
let capture;
let tracker
let positions;
function setup() {
createCanvas(windowWidth, windowHeight);
capture = createCapture(VIDEO);
capture.elt.setAttribute('playsinline', '');
capture.size(width, height);
capture.hide();
tracker = new clm.tracker();
tracker.init();
tracker.start(capture.elt);
}
function draw() {
image(capture, 0, 0, width, height);
positions = tracker.getCurrentPosition(); // updates the tracker with current positions
// draw face outline
noFill();
stroke(255);
beginShape();
for (let i = 0; i < positions.length; i++) {
vertex(positions[i][0], positions[i][1]);
}
endShape();
noStroke();
for (let i = 0; i < positions.length; i++) {
fill(0, 255, 0);
ellipse(positions[i][0], positions[i][1], 4, 4);
text(i, positions[i][0], positions[i][1]);
}
if (positions.length > 0) {
let mouthLeft = createVector(positions[44][0], positions[44][1]);
let mouthRight = createVector(positions[50][0], positions[50][1]);
let smile = mouthLeft.dist(mouthRight);
print(smile);
rect(20, 20, smile * 3, 20);
}
}