tracking.js 人脸识别(在照片上画框框)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>FACE1</title>
    <link rel="stylesheet" href="assets/demo.css">
    <script src="../build/tracking.js"></script>
    <script src="../build/data/eye.js"></script>
    <script src="../build/data/mouth.js"></script>
    <script src="../build/data/face.js"></script>
    <style>
        .rect {
            border: 2px solid #a64ceb;
            left: -1000px;
            position: absolute;
            top: -1000px;
        }
        
        #img {
            position: absolute;
            top: 50%;
            left: 50%;
            margin: -200px 0 0 -200px;
        }
    </style>
</head>

<body>
    <div class="demo-container">
        <img id="img" src="standard.jpg" />
    </div>
    <script>
        window.onload = function() {
            var img = document.getElementById('img');
            var tracker = new tracking.ObjectTracker(['face', 'eye', 'mouth']);
            tracker.setStepSize(1.5);
            tracker.on('track', function(event) {
                if (event.data.length === 0) {} else {
                    event.data.forEach(function(rect) {
                        console.log('yes');
                        var div1 = document.createElement('div');
                        document.querySelector('.demo-container').appendChild(div1);
                        div1.classList.add('rect');
                        div1.style.width = rect.width + 'px';
                        div1.style.height = rect.height + 'px';
                        div1.style.left = (img.offsetLeft + rect.x) + 'px';
                        div1.style.top = (img.offsetTop + rect.y) + 'px';
                    })
                }
            });
            tracking.track(img, tracker);
        }
    </script>
</body>

</html>

在网上看过很多tracking.js实践,但最开始我是看不懂的,慢慢琢磨才看懂代码,所以我希望写一个最简洁、最简单的tracking.js人脸识别实践。

先放我一个小时研究出来的事情,基本把官网代码删减到了最简。

实现结果如下图所示:

 获取照片这一步是必不可少的,如果遇到本地图片跨域的问题,推荐vscode下载插件Live Server。

new一个tracker,后面必须要写的是需要识别的物体。

接下来是利用setStepSize设置步长,原理我猜可能是梯度下降,回忆了一下运筹学课本,似乎是这个参数不可以大于2的,也不可以小于1,本专业知识有些生疏了,如有错误请指正。

(如果出现要求识别脸和眼睛但只识别到脸的情况,这个参数是可以灵活变化的,只要大于1小于2就可以,建议多取几次试一试,这里的参数是我比较后的最佳结果。)

接下来是设置追踪,设置追踪的时候一定不要忘记配套CSS,因为方框定位是通过css来实现的,也一定不要忘了给方框添加类。

最后追踪图片,完毕。

因为我就是小白,所以希望写得所有小白都可以看得懂tracking.js入门,最后恳请大佬指正不对的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值