Javascript 获取一个图像后停止函数
这是我上一个问题的延伸,可从以下网址获得。这里我的要求是,一旦检测到一张有一张脸的图像,过程应该停止,但在我的情况下,这是一个永无止境的循环 1是长度 检测到1张人脸 我试过下面的代码Javascript 获取一个图像后停止函数,javascript,Javascript,这是我上一个问题的延伸,可从以下网址获得。这里我的要求是,一旦检测到一张有一张脸的图像,过程应该停止,但在我的情况下,这是一个永无止境的循环 1是长度 检测到1张人脸 我试过下面的代码 tracker.on('track', function(event) { context.clearRect(0, 0, canvas.width, canvas.height); console.log(event.data.length
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');
}
});
上面的代码对输出没有任何影响(循环永远不会结束)
但是我使用了一个中断
,如下所示
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');
}
});
但是上面的代码给了我一个例外,因为未捕获的语法错误:非法的break语句
,我知道break应该只用于循环
,或者如果
,我认为在我当前的场景中,它是循环,我使用了它
这是我的密码
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
,我找到的方法在
谢谢您需要在单面播放第一首曲目后停止收听跟踪事件。我认为这是可行的:
if (event.data.length == 1) {
console.log('1 face detected');
tracking.stop(); //Not tracker, tracking
}
或者这样:编辑的
if (event.data.length == 1) {
console.log('1 face detected');
tracker.on('track', function(event){});
}
您可以从
tracker
中removeListener
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
});
function trackListener(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');
tracker.removeListener('track', trackListener);
} else {
console.log('Multiple faces detected');
}
}
tracker.on('track', trackListener);
};
或使用一次
方法
tracker.once('track', trackListener);
这将错误设置为
uncaughttypeerror:Listener必须是tracker.on('track',{})上的函数
和未捕获类型错误:当我使用tracker.stop()时,tracker.stop不是一个函数
代码>