xxxxxxxxxx
54
// BodyPoseSkeleton.js (c) 2024 kouichi.matsuda@gmail.com
let img;
let bodyPose;
let skelton;
function preload() {
bodyPose = ml5.bodyPose(modelLoaded);
img = loadImage("hito.jpg")
}
function setup() {
createCanvas(640, 480);
image(img, 0, 0);
}
function draw() {
}
function modelLoaded(){
bodyPose.detect(img, onPose);
skeleton = bodyPose.getSkeleton(); // 骨格情報の取り出し
print(skeleton)
}
function onPose(r) {
drawKeypoints(r);
drawSkeleton(r);
}
function drawKeypoints(r){
for (let i = 0; i < r.length; i++) {
let pose = r[i];
for (let j = 0; j < pose.keypoints.length; j++) {
let kp = pose.keypoints[j];
if (kp.confidence < 0.5) continue;
ellipse(kp.x, kp.y, 8, 8);
}
}
}
function drawSkeleton(r) {
for (let i = 0; i < r.length; i += 1) {
let pose = r[i];
for (let j = 0; j < skelton.length; j += 1) {
let id_a = skelton[j][0]
let id_b = skelton[j][1]
let a = pose.keypoints[id_a]
let b = pose.keypoints[id_b]
if (a.confidence < 0.1 || b.confidence < 0.1) continue;
line(a.x, a.y, b.x, b.y);
}
}
}