這是對我之前的問題的擴展,可在Count number of faces using javascript。在這裏,我的要求是一次檢測到有一張臉的圖像,該過程應該停止,但在我的情況下,它是一個永無止境的循環。獲取一張圖像後停止功能
1 is the length
1 face detected
我試了下面的代碼。
tracker.on('track', function(event) {
context.clearRect(0, 0, canvas.width, canvas.height);
console.log(event.data.length + "\t is the length");
if (event.data.length == 1) {
console.log('1 faces detected');
return;
} else {
console.log('Multiple faces detected');
}
});
上面的代碼對輸出沒有任何影響(循環永不結束)。
但是相反,我使用瞭如下的break
。
tracker.on('track', function(event) {
context.clearRect(0, 0, canvas.width, canvas.height);
console.log(event.data.length + "\t is the length");
if (event.data.length == 1) {
console.log('1 face detected');
break;
} else {
console.log('Multiple faces detected');
}
});
但上面的代碼給了我一個例外,因爲Uncaught SyntaxError: Illegal break statement
,我知道休息是應該爲loops
或if
僅被使用,認爲在我目前的情況下,它是循環的,我用它。
這是我的代碼。
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);
console.log(event.data.length + "\t is the length");
if (event.data.length == 1) {
console.log('1 face detected');
tracking.track('#video', tracker).stop();
} else {
console.log('Multiple faces detected');
}
});
};
通過我看到有一個stop()
方法的文檔去,我用它,但它仍然不會停止。有人可以讓我知道我哪裏錯了,我怎樣才能停止進一步循環獲得1圖像後。
我使用的是相同的trackingjs.js
,我發現該方法可在https://trackingjs.com/docs.html#trackers
感謝
這給誤差作爲'未捕獲的類型錯誤:監聽器必須在'tracker.on一個function'( '軌道',{});'和' Uncaught TypeError:tracker.stop不是函數'當我使用tracker.stop();' – user3872094
我編輯了我的答案 – ardilgulez