xxxxxxxxxx
82
let video;
let poseNet;
let pose;
let skeleton;
let noseX =0;
let noseY=0;
let eyelX=0;
let eyelY=0;
function setup() {
createCanvas(640, 480);
video = createCapture(VIDEO);
video.hide();
//load hte posenet model and connect to the video
poseNet = ml5.poseNet(video, modelReady);
poseNet.on('pose', gotPoses);
//console.log(ml5);
}
function modelReady(){
console.log('model ready')
}
function gotPoses(poses) {
console.log(poses);
if (poses.length > 0) {
let nX=poses[0].pose.keypoints[0].position.x;
let nY=poses[0].pose.keypoints[0].position.y;
let eX=poses[0].pose.keypoints[1].position.x;
let eY=poses[0].pose.keypoints[1].position.y;
noseX= lerp(noseX, nX, 0.2);
noseY= lerp(noseY, nY, 0.2);
eyelX= lerp(eyelX, eX, 0.2);
eyelY= lerp(eyelY, eY, 0.2);
// pose = poses[0].pose;
// skeleton = poses[0].skeleton;
}
}
function draw() {
image(video, 0, 0);
//filter(GRAY);
//make nose porportional to the distance bwt the nose and the eyes
let d = dist(noseX,noseY, eyelX, eyelY);
//SMOOTH nose puppet follows you
fill(255,0,0);
//ellipse(noseX, noseY, 50);
ellipse(noseX, noseY, d);
// fill(255);
// ellipse(eyelX, eyelY, 50);
if (pose) {
let eyeR = pose.rightEye;
let eyeL = pose.leftEye;
let d = dist(eyeR.x, eyeR.y, eyeL.x, eyeL.y);
fill(255, 0, 0);
ellipse(pose.nose.x, pose.nose.y, d);
fill(0, 0, 255);
ellipse(pose.rightWrist.x, pose.rightWrist.y, 32);
ellipse(pose.leftWrist.x, pose.leftWrist.y, 32);
for (let i = 0; i < pose.keypoints.length; i++) {
let x = pose.keypoints[i].position.x;
let y = pose.keypoints[i].position.y;
fill(0,255,0);
ellipse(x,y,16,16);
}
for (let i = 0; i < skeleton.length; i++) {
let a = skeleton[i][0];
let b = skeleton[i][1];
strokeWeight(2);
stroke(255);
line(a.position.x, a.position.y,b.position.x,b.position.y);
}
}
}