2017-06-21 36 views
-1

有沒有一種方法可以計算實時相機中的臉部數量。使用javascript計算臉部數量

比如我在一個網絡攝像頭前面三個人,我有2頁說,Success.html錯誤的.html和作爲底層的方式部分重定向法官成功錯誤頁面的情況會是,如果只檢測到一張臉,應該發送到成功,否則,應該發送到錯誤

我使用tracking.js來檢測我的網頁中的臉部,目前我的代碼如下。

<!doctype html> 
<html> 

<head> 
<meta charset="utf-8"> 
<title>tracking.js - face with camera</title> 
<link rel="stylesheet" href="assets/demo.css"> 

<script src="js/tracking-min.js"></script> 
<script src="js/data/face-min.js"></script> 
<script src="js/dat.gui.min.js"></script> 
<script src="assets/stats.min.js"></script> 

<style> 
video, canvas { 
    margin-left: 230px; 
    margin-top: 120px; 
    position: absolute; 
} 
</style> 
</head> 

<body> 
    <div class="demo-title"> 
     <p> 
      <a href="http://trackingjs.com" target="_parent">tracking.js</a> - 
      get user's webcam and detect faces 
     </p> 
    </div> 

    <div class="demo-frame"> 
     <div class="demo-container"> 
      <video id="video" width="320" height="240" preload autoplay loop 
       muted></video> 
      <canvas id="canvas" width="320" height="240"></canvas> 
     </div> 
    </div> 

    <script> 
     window.onload = function() { 
      var video = document.getElementById('video'); 
      var canvas = document.getElementById('canvas'); 
      var context = canvas.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) { 

        console.log('face detected'); 
       }); 
      }); 

    </script> 

</body> 

</html> 

在我的控制檯中,我可以打印face detected

請讓我知道如何檢測窗口中的多個面。

感謝

+0

你檢查tracking.js文檔?它看起來相當完整。 – sjahan

+1

event.data.length? –

+1

所以2個或更多的臉部應該會導致重定向到'error.html'的權利?你知道重定向,因爲計數檢測到的臉部只是一種檢查'event.data.length'(0表示無臉部,1表示1臉部等)的方式。 – vassiliskrikonis

回答

1

從文檔:

myTracker.on('track', function(event) { 
    if (event.data.length === 0) { 
    // No targets were detected in this frame. 
    } else { 
    event.data.forEach(function(data) { 
     // Plots the detected targets here. 
    }); 
    } 
}); 

這似乎是event.data.length,讓您跟蹤元素的數量。

1

FOM在https://trackingjs.com/docs.html#trackers

myTracker.on('track', function(event) { 
    if (event.data.length === 0) { 
    // No targets were detected in this frame. 
    } else { 
    event.data.forEach(function(data) { 
     // Plots the detected targets here. 
    }); 
    } 
}); 

使用event.data.length的文檔數面的量。

在你的代碼:

tracker.on('track', function(event) { 
    context.clearRect(0, 0, canvas.width, canvas.height); 
    // console log amount of elements found 
    console.log(event.data.length); 
    event.data.forEach(function(rect) { 
     console.log('face detected'); 
    }); 
});