xxxxxxxxxx
50
// PoseNetCamera (c) 2021 kouichi.matsuda@gmail.com
let pn; // 姿勢推定器
let camera; // カメラ
function setup() {
createCanvas(640, 480);
camera = createCapture(VIDEO);
pn = ml5.poseNet(camera, modelLoaded); // (1) 推定器の用意
camera.hide(); // 描画領域に表示するので隠す
}
function draw() {
}
function modelLoaded() {
pn.on("pose", onPose);
}
function onPose(r) {
image(camera, 0, 0, width, height); // カメラ画像の表示
drawKeypoints(r); // キーポイントの描画
drawSkeleton(r); // 骨格の描画
}
function drawKeypoints(r) {
for (let i = 0; i < r.length; i++) {
let pose = r[i].pose;
for (let j = 0; j < pose.keypoints.length; j++) {
let kp = pose.keypoints[j];
if (kp.score > 0.5) {
ellipse(round(kp.position.x), round(kp.position.y), 8, 8);
}
}
}
}
function drawSkeleton(r) {
for (let i = 0; i < r.length; i += 1) {
let skeleton = r[i].skeleton;
for (let j = 0; j < skeleton.length; j += 1) {
let a = skeleton[j][0];
let b = skeleton[j][1];
line(a.position.x, a.position.y, b.position.x, b.position.y);
}
}
}