使用跟踪JS限制对象跟踪区域

时间:2019-02-26 14:31:51

标签: javascript augmented-reality

试图使用跟踪js库限制对象跟踪器的扫描范围。

例如我想让对象跟踪器仅在要拾取的摄像机视频供稿的选定区域内查找对象,然后根据获取的跟踪信息将任何内容放置在画布上。

当前,对象跟踪器正在扫描enitre视频,然后将rects放置在已找到对象的画布上,我要做的是将对象跟踪器限制在较小的区域,然后将rects放置在画布上。

有什么想法吗?

var fTrack = {
                faceTracking: function() {
                var face = new tracking.ObjectTracker('face');

                face.setInitialScale(3);
                face.setStepSize(1);
                face.setEdgesDensity(0.1);

                    guiup.gui(face);               

                    ctx.beginPath();
                    ctx.lineWidth = "6";
                    ctx.strokeStyle = "#fff";
                    ctx.rect((placehold.width/2 - (500/2)), (placehold.height/2 - (600/2)), 500, 600);  
                    ctx.stroke();
                    ctx.font = "30px Comic Sans MS";
                    ctx.fillStyle = "#fff";
                    ctx.textAlign = "center";
                    ctx.fillText("Place face within box",placehold.width/2,770);


            var faceTracker = tracking.track('#video', face, {camera:true});//{ camera: true });


                face.on('track', function(event) {

                context.clearRect(0,0,canvas.width,canvas.height);

                if(!event.data) return;

            event.data.forEach(function(rect) { //Replace code here to do something else once working correctly

                //draw basic rectangle around face colour black
                context.strokeStyle = '#fff';
                context.strokeRect(rect.x, rect.y, rect.width, rect.height);
                // select size of font
                context.font = '11px Helvetica';
                //font colour
                context.fillStyle = "#fff";
                //text to be displayed around face rectangle(will be displayed on the right)
                context.fillText('x: ' + rect.x + 'px', rect.x + rect.width + 5, rect.y + 11); // to show xpx
                context.fillText('y: ' + rect.y + 'px', rect.x + rect.width + 5, rect.y + 22); // to show ypx

1 个答案:

答案 0 :(得分:0)

也许您可以只检查最后一个forEach函数中rect的位置。

只在您所在区域内做出反应