ckportfolio.com - Tracker: JavaScript

Tracker: JavaScript

Events

$(document).on("click", "#start", start);
$(document).on("click", "#detect", detect);

Application Functions

function start(){

  handsfree.start();
  handsfree.showDebugger();
  $("#debug").append(handsfree.debug.$wrap);

  setInterval(detect, 1000);

}

function detect(){

    var url = $(".handsfree-canvas-video")[0].toDataURL();

    var payload = {
      image: url
    };

    $.ajax({
      url: "https://ocadu.goodcodeclub.com/sentiment/send.php",
      type: "POST",
      data: payload,
      success: emote
    });

}

function emote(data){

  $("#emoji").empty();
  $("#log").text(data);

  if (data.indexOf("sorrow") > -1) {

    $("#emoji").append("😭");

  }

  if (data.indexOf("anger") > -1) {

    $("#emoji").append("😡");

  }

  if (data.indexOf("joy") > -1) {

    $("#emoji").append("🥰");

  }

  if (data.indexOf("surprise") > -1) {

    $("#emoji").append("😱");

  }  

  if (data == "") {

    $("#emoji").text("😐");

  }

}

Object Tracking Initialization

var option = {
  facemesh: true,
  setup: {
    video: {
      $el: document.querySelector("#player")
    }
  }
}

var handsfree = new Handsfree(option);

handsfree.use("logger", data => {

  if (typeof data.facemesh != "undefined" && typeof data.facemesh.multiFaceLandmarks != "undefined") {

    var position = data.facemesh.multiFaceLandmarks[0][0];
    var json = JSON.stringify(position);

    var x = position.x * 100;
    var y = position.y * 100;

    $("#emoji").css("left", x+"%");
    $("#emoji").css("top", y+"%");  

  }

})
Fin