keypoints

 

 

 

 

 

meerdere vleugeltjes, scoreThreshold: 0.8

meerdere vleugeltjes, scoreThreshold: 0.8

 

 

 

 

een vleugeltje, scoreThreshold: 0.5;

een vleugeltje, scoreThreshold: 0.5;

 

poseNet engel.           terug naar de inleiding          naar de schets in fullscreen

De schets kan maximaal vijf engeltjes detecteren. In regel 32 worden mbv de for lus de gedetecteerde engeltjes voorzien van vleugeltjes.
Het komt ook voor dat een engeltje als drie engeltjes wordt gedetecteerd. het gedetecteerde engeltje heeft dan meerdere vleugeltjes.
Dit verholpen door scoreThreshold: 0.8, als option (regel 12) aan de poseNet constructor (regel 14) toe te voegen.

De default scoreThreshold = 0.5, zie op de ml5.js het lijstje met alle default poseNet constructor options.

De vleugeltjes
Ieder engeltje heeft aan een kant 3 vleugeltjes alle vleugeltjes hebben de knie als aanheching
1) vierhoek polsvleugeltje, aanhechtingen:          knie , pols , heup en schouder
2) driehoek elleboog vleugeltje, aanhechtingen: knie , elleboog en heup

3) driehoek schouder vleugeltje, aanhechting:    knie , schouder en heup

Dankzij de driehoek vleugeltjes zijn de engeltjes , tijdens het vliegen , zeer wendbaar.

 
let video;
let poseNet;
let poses = [];
 
function setup() {
  createCanvas(640, 480);
  video = createCapture(VIDEO);
  video.hide();
 
  let options = {
    scoreThreshold: 0.8,
  };
  poseNet = ml5.poseNet(video,options,modelLoaded);
 
  //de posenet listener
  //middels onderstaande code krijgt de globale array "poses" de data,
  //telkens als er nieuwe poses (= personen) worden gedetecteerd
  //deze data is in het console te zien
    poseNet.on('pose', function(results) {
      poses = results;
      console.log(poses);
    });
}
 
function modelLoaded() {
  console.log("poseNet ready");
}
 
function draw() {
   image (video,0,0);
   for (let i = 0; i < poses.length; i++)
 {
   let skeletpunt = poses[i].pose.keypoints;
   let polsRex = skeletpunt[10].position.x;
   let polsRey = skeletpunt[10].position.y;
   let schoudRex = skeletpunt[6].position.x;
   let schoudRey = skeletpunt[6].position.y;
   let heupRex = skeletpunt[12].position.x;
   let heupRey = skeletpunt[12].position.y;
   let knieRex = skeletpunt[14].position.x;
   let knieRey = skeletpunt[14].position.y;
   let elbRex = skeletpunt[8].position.x;
   let elbRey = skeletpunt[8].position.y;
 
   let polsLix = skeletpunt[9].position.x;
   let polsLiy = skeletpunt[9].position.y;
   let schoudLix = skeletpunt[5].position.x;
   let schoudLiy = skeletpunt[5].position.y;
   let heupLix = skeletpunt[11].position.x;
   let heupLiy = skeletpunt[11].position.y;
   let knieLix = skeletpunt[13].position.x;
   let knieLiy = skeletpunt[13].position.y;
   let elbLix = skeletpunt[7].position.x;
   let elbLiy = skeletpunt[7].position.y;
 
   //------------------rechervleugel en borstdriehoek-----------------------
 
   let alpha = 100;
   fill(31,186,240,alpha);
   beginShape();
   {vertex(polsRex, polsRey);vertex(schoudRex, schoudRey);
    vertex(heupRex, heupRey);  vertex(knieRex, knieRey);}
   endShape(CLOSE);
 
   fill(240,31,38,alpha);
   beginShape();
   {vertex(elbRex,elbRey);vertex(heupRex,heupRey);vertex(knieRex,knieRey);}
   endShape(CLOSE);
 
   fill(240,31,38,alpha);
   beginShape();
   {vertex(elbRex,elbRey);vertex(schoudRex,schoudRey);vertex(knieRex,knieRey);}
   endShape(CLOSE);
 
//-------------------------------borstdriehoek Re----------------------------------
 
   fill(240,31,38,alpha);
   beginShape();
   {vertex(schoudRex,schoudRey);vertex(heupRex,heupRey);vertex(heupLix,heupLiy);}
   endShape(CLOSE);
 
///---------------------linkervleugel en borstdriehoek Li----------------------
 
   fill(31,186,240,alpha);
   beginShape();
   {vertex(polsLix, polsLiy);vertex(schoudLix, schoudLiy);
    vertex(heupLix, heupLiy);  vertex(knieLix, knieLiy);}
   endShape(CLOSE);
 
   fill(240,31,38,alpha);
   beginShape();
   {vertex(elbLix,elbLiy);vertex(heupLix,heupLiy);vertex(knieLix,knieLiy);}
   endShape(CLOSE);
 
   fill(240,31,38,alpha);
   beginShape();
   {vertex(elbLix,elbLiy);vertex(schoudLix,schoudLiy);vertex(knieLix,knieLiy);}
   endShape(CLOSE);
 
//-------------------------------borstdriehoek li----------------------------------
 
   fill(31,186,240,alpha);
   beginShape();
   {vertex(schoudLix,schoudLiy);vertex(heupLix,heupLiy);vertex(heupRex,heupRey);}
   endShape(CLOSE);
  }
}