Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取一个图像后停止函数_Javascript - Fatal编程技术网

Javascript 获取一个图像后停止函数

Javascript 获取一个图像后停止函数,javascript,Javascript,这是我上一个问题的延伸,可从以下网址获得。这里我的要求是,一旦检测到一张有一张脸的图像,过程应该停止,但在我的情况下,这是一个永无止境的循环 1是长度 检测到1张人脸 我试过下面的代码 tracker.on('track', function(event) { context.clearRect(0, 0, canvas.width, canvas.height); console.log(event.data.length

这是我上一个问题的延伸,可从以下网址获得。这里我的要求是,一旦检测到一张有一张脸的图像,过程应该停止,但在我的情况下,这是一个永无止境的循环

1是长度

检测到1张人脸

我试过下面的代码

    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不是一个函数