前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人脸识别JavaScript也可以轻松搞定

人脸识别JavaScript也可以轻松搞定

作者头像
Javanx
发布2019-09-04 10:28:43
1.4K0
发布2019-09-04 10:28:43
举报
文章被收录于专栏:web秀web秀

前言

是不是觉得不可思议,js已经强大到这个地步? 是的,js日新月异,它在不断的进步。只要稍不留神,那我们都只能望尘莫及了。

今天我们就来看看是什么js插件可以如此厉害?

人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定

tracking.js

tracking.js 库将不同的计算机视觉算法和技术引入浏览器环境。通过使用现代HTML5规范,能够进行实时颜色跟踪、人脸检测等等。而这些牛逼的功能,仅仅只有7kb大小。

tracking.js文档地址 tracking.js示例地址

人脸识别示例

代码语言:javascript
复制
<script src="./tracking-min.js"></script>
<script src="./face-min.js"></script>
...
<img id="img" src="assets/faces.jpg">
...
<script>
window.onload = function() {
  var img = document.getElementById('img');

  var tracker = new tracking.ObjectTracker('face');

  tracking.track(img, tracker);

  tracker.on('track', function(event) {
    event.data.forEach(function(rect) {
      console.log(rect.x, rect.y, rect.width, rect.height);
      plotRectangle(rect.x, rect.y, rect.width, rect.height);
    });
  });

  // 下方的代码可以先忽略
  var friends = [ 'Thomas Middleditch', 'Martin Starr', 'Zach Woods' ];

  var plotRectangle = function(x, y, w, h) {
    var rect = document.createElement('div');
    var arrow = document.createElement('div');
    var input = document.createElement('input');

    input.value = friends.pop();

    rect.onclick = function name() {
      input.select();
    };

    arrow.classList.add('arrow');
    rect.classList.add('rect');

    rect.appendChild(input);
    rect.appendChild(arrow);
    document.getElementById('photo').appendChild(rect);

    rect.style.width = w + 'px';
    rect.style.height = h + 'px';
    rect.style.left = (img.offsetLeft + x) + 'px';
    rect.style.top = (img.offsetTop + y) + 'px';
  };
};

</script>

代码解析:

1、首先引入tracking.js,以及相关的实例js 2、new 一个实例,获取face集合,event.data 3、遍历集合,获取每个face坐标等信息 4、绘制出坐标所在选区(这部分可以忽略,主要就上面3步)

人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定

坐标集合描述

人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定

脸嘴巴,眼睛识别

代码大同小异,不过需要在引入两个js文件

代码语言:javascript
复制
...
<script src="./eye-min.js"></script>
<script src="./mouth-min.js"></script>
...
<script>
var tracker = new tracking.ObjectTracker(['face', 'eye', 'mouth']);
</script>
人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定

通过上图,就会发现一个问题,不是很清晰的部位,是不能被识别出来的,最左边的人像,只识别出了一只眼睛。

这里还有一个js插件也可以做人脸识别,咱们就来对比一下。

PK

先来介绍一下另外一款人脸识别插件,JqueryFaceDetection,顾名思义,是一款基于Jquery的插件。

代码上面我们就不做对比了,主要来看看识别度,识别情况。

人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定

此图一出,有爱好JqueryFaceDetection的小伙伴要说,what? 说好的人脸识别,你给我放个大猩猩是几个意思?好吧,我错了,来看下图。

tracking.js

人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定

JqueryFaceDetection

人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定

这下就好说明问题了,tracking.js略胜一筹。

颜色识别

颜色识别只需要引入tracking-min.js即可。这里在图中查找,品红,青色和黄色,然后用框标记出来。

代码语言:javascript
复制
window.onload = function() {
  var img = document.getElementById('img');
  var demoContainer = document.querySelector('.demo-container');

  var tracker = new tracking.ColorTracker(['magenta', 'cyan', 'yellow']);

  tracker.on('track', function(event) {
    event.data.forEach(function(rect) {
      window.plot(rect.x, rect.y, rect.width, rect.height, rect.color);
    });
  });

  tracking.track('#img', tracker);

  window.plot = function(x, y, w, h, color) {
    var rect = document.createElement('div');
    document.querySelector('.demo-container').appendChild(rect);
    rect.classList.add('rect');
    rect.style.border = '2px solid ' + color;
    rect.style.width = w + 'px';
    rect.style.height = h + 'px';
    rect.style.left = (img.offsetLeft + x) + 'px';
    rect.style.top = (img.offsetTop + y) + 'px';
  };
};
人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定

其他

tracking.js不仅能识别图片,还能处理视频。

人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定
人脸识别JavaScript也可以轻松搞定

总的来看,是不是感觉很强大了?未来可期,前端技术越来越厉害,希望和你携手共进。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年2月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • tracking.js
  • 人脸识别示例
    • 代码解析:
      • 脸嘴巴,眼睛识别
        • PK
        • 颜色识别
        • 其他
        相关产品与服务
        人脸识别
        腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档