之前项目中用过人脸识别,主要是js调用器摄像头,通过利用canvas画布将视频当前帧转换成图片的实例,其中用到了 mediaDevices.getUserMedia 方法。合成的图片发送给后台要后台去做活体检测。功能实现没问题,但是前端都是只能靠点击一个按钮来拍照,实现的太傻瓜。后来在掘金上看到一个大佬利用tracking来实现前端部分功能,改库只对人脸有效,而且能够框住人脸和跟踪,于是跟着文章自己实现了一遍。
开发
1、找个架子
我使用的[vue-cli3.0][1]来,快速搭建模板,而且官方的较为标准,有问题也可以在网上找到答案。
2、插件tracking.js
Tracking.js 是一个独立的JavaScript库,用于跟踪从相机实时收到的数据。跟踪的数据既可以是颜色,也可以是人,也就是说我们可以通过检测到某特定颜色,或者检测一个人体/脸的出现与移动,来触发JavaScript 事件。它是非常易于使用的API,具有数个方法和事件(足够使用了)。
传送门 tracking.js
3、插件face-api.js
是一个 JavaScript API,是基于 tensorflow.js 核心 API 的人脸检测和人脸识别的浏览器实现。它实现了一系列的卷积神经网络(CNN),针对网络和移动设备进行了优化
4、引入js
下载两个文件后 在index.html引入12<script src="./tracking-min.js"></script><script src="./face-min.js"></script>
5、设计流程
- 调用摄像头
- 检测摄像头中是否有人脸
- 如果有人脸在画面中画出canvas层
- 导出base64图片
- 把图片发送给后端进行人脸叫人
- 获得返回接口
6、HTML结构
|
|
7、js部分
|
|
8、效果
仓库地址:https://github.com/airzhanglin/vueFace
效果展示:https://demo.zhanglin168.cn/face.html