<!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入门,最后恳请大佬指正不对的地方。