使用tracking.js进行人脸识别

时间:2017-12-29 15:08:51

标签: javascript python opencv

在客户端(HTML)使用网络摄像头我需要检测面部并处理中间件(python)中的面部图像一旦处理完成,面部的相关名称必须被标记到在实时影像。

使用tracking.js我能够检测到面部但无法在服务器端进行面部识别(python)

每个检测到的帧如何从tracking.js发送到服务器?

如何将中间件的响应(人名)标记为网络摄像头中检测到的面部?

我尝试使用webhooks,但无法将检测到的帧发送到服务器。

使用javascript,我尝试使用下面的代码脚本。

window.onload = function() {
      var video = document.getElementById('video');
      var canvas = document.getElementById('canvas');
      var context = canvas.getContext('2d');
      var c=document.getElementById("image_canvas");
      var ctx=c.getContext("2d");
      var tracker = new tracking.ObjectTracker('face');
      tracker.setInitialScale(4);
      tracker.setStepSize(2);
      tracker.setEdgesDensity(0.1);

      tracking.track('#video', tracker, { camera: true });

      tracker.on('track', function(event) {
        context.clearRect(0, 0, canvas.width, canvas.height);

      event.data.forEach(function(rect) {
          context.strokeStyle = '#FFFAF0';
          console.log(rect);
          context.strokeRect(rect.x, rect.y, rect.width, rect.height);
          context.font = '11px Helvetica';
          context.fillStyle = "#fff";
          context.fillText('x: ' + rect.x + 'px', rect.x + rect.width + 5, rect.y + 11);
          context.fillText('y: ' + rect.y + 'px', rect.x + rect.width + 5, rect.y + 22);
          ctx.clearRect(0, 0, 180, 180);
          ctx.drawImage(video, rect.x+50, rect.y-20, rect.width+160, rect.height+180, 0, 0, 180, 180);


         var http = new XMLHttpRequest();
         var url = "/createreg";
         var params = 'imageData:'+ctx;
         http.open("POST", url, true);
         http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

         http.onreadystatechange = function() {//Call a function when the state changes.
        if(http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
        }
         }
        http.send(params);

在python Side iam尝试阅读图像对象

@app.route('/createreg', methods=['POST'])
#@token_required
def createreg():
        print('-----3.1---',request.form['imageData'])  

我无法从服务器读取图片对象(app.py) 请提出前进的方向。

由于

1 个答案:

答案 0 :(得分:0)

我认为你已经做过的最困难的部分就是检测正面的脸部。

一旦你得到它,可能这个api / framework tracking.js应该有一个像onFaceDetected或onImageCaptured这样的事件,可以用来将捕获的面部发送到服务器。

可能在背面你有一个Web服务,它将接收图像(面部)并将处理它并返回respose,图像将是一个数据结构,就像一个包含base64图像的json。所以为了完成你想要的结果,你需要在事件上获得所需格式的图像(bytearray,base64等),用它构建一个json并使用ajax发送到webservice,获取结果并通过javascript更新ui