$(function(){//执行开始的方法//showpos = true;startTrack();})var showpos = false;// Put event listeners into place//window.addEventListener("DOMContentLoaded", function() {// Grab elements, create settings, etc.var canvas = document.getElementById("canvas"),context = canvas.getContext("2d"),video = document.getElementById("video"),videoObj = {"video": true},errBack = function(error) {if(error.PERMISSION_DENIED) {jAlert('用户拒绝了浏览器请求媒体的权限', '提示');} else if(error.NOT_SUPPORTED_ERROR) {jAlert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');} else if(error.MANDATORY_UNSATISFIED_ERROR) {jAlert('指定的媒体类型未接收到媒体流', '提示');} else {jAlert('系统未能获取到摄像头,请确保摄像头已正确安装。或尝试刷新页面,重试', '提示');}};// Put video listeners into placeif(navigator.getUserMedia) { // Standardnavigator.getUserMedia(videoObj, function(stream) {video.src = stream;video.play();}, errBack);} else if(navigator.webkitGetUserMedia) { // WebKit-prefixedtry {navigator.webkitGetUserMedia(videoObj, function(stream) {video.src = window.webkitURL.createObjectURL(stream);video.play();}, errBack);} catch(error) {alert(error);}} else if(navigator.mozGetUserMedia) { // Firefox-prefixednavigator.mozGetUserMedia(videoObj, function(stream) {video.src = window.URL.createObjectURL(stream);video.play();}, errBack);}//张嘴document.getElementById("mouse").addEventListener("click", function() {var audio = document.createElement('audio');var source = document.createElement('source');source.type = "audio/mp3";source.src = "mp3/alive_mouse.mp3";source.autoplay = "autoplay";source.controls = "controls";audio.appendChild(source);audio.play();alive_mouse();});//摇头document.getElementById("head").addEventListener("click", function() {alive_head();});//眨眨眼document.getElementById("eye").addEventListener("click", function() {var audio = document.createElement('audio');var source = document.createElement('source');source.type = "audio/mp3";source.src = "mp3/alive_eye.mp3";source.autoplay = "autoplay";source.controls = "controls";audio.appendChild(source);audio.play();alive_eye();});//}, false);////////////////////////////////////////////////////////////////////////////////活体var last_time = 0; //时间因素var last_nose_left = 0;var last_nose_top = 0;//张嘴动作var is_mouse_ok = false;var is_alive_mouse = false;var last_dis_eye_norse = 0;var last_dis_mouse = 0;//检测张嘴动作function alive_mouse() {document.getElementById("tip").innerHTML = "请张合嘴巴";document.getElementById('result').value = "";is_mouse_ok = false;last_dis_mouse = 0;last_time = 0;last_dis_eye_norse = 100000000;is_alive_head = false;is_alive_mouse = true;is_alive_eye = false;}//摇头动作var is_head_ok = false;var is_alive_head = false;var last_dis_left_right = 100000000;function alive_head() {document.getElementById("tip").innerHTML = "请在水平方向左右摇头";document.getElementById('result').value = "";is_head_ok = false;last_dis_left_right = 100000000;last_time = 0;is_alive_head = true;is_alive_mouse = false;is_alive_eye = false;}//眨眼动作var is_alive_eye = false;var is_eye_ok = false;function alive_eye() {document.getElementById("tip").innerHTML = "请眨眼";document.getElementById('result').value = "";is_eye_ok = false;last_dis_eye_norse = 100000000;last_nose_left = 0;last_nose_top = 0;last_time = 0;is_alive_head = false;is_alive_mouse = false;is_alive_eye = true;}function startTrack() {var videoInput = document.getElementById('video');var ctracker = new clm.tracker();ctracker.init(pModel);ctracker.start(videoInput);var canvasInput = document.getElementById('canvas');var cc = canvasInput.getContext('2d');cc.lineWidth = 3;function drawLoop() {//requestAnimationFrame(drawLoop);cc.clearRect(0, 0, canvasInput.width, canvasInput.height);//ctracker.draw(canvasInput );var positions = ctracker.getCurrentPosition();if(showpos && positions) {for(var p = 0; p < positions.length; p++) {positionString += "featurepoint " + p + " : [" + positions[p][0].toFixed(2) + "," + positions[p][1].toFixed(2) + "]<br/>";}document.getElementById('positions').innerHTML = positionString;}if(positions) {for(var p = 0; p < 71; p++) {cc.beginPath();cc.arc(positions[p][0].toFixed(2), positions[p][1].toFixed(2), 2, 0, Math.PI * 2, true);cc.closePath();cc.fillStyle = '#00FF00';cc.fill();}//cc.strokeStyle = 'red';//0-14 轮廓//7 下吧,最下//2 最左边//12 最右边//15-22 眉毛//23-27 左眼睛五个点//27 左眼中间//63-66 左眼四个点//28-32 右眼睛五个点//67-70 右眼四个点//33-43 鼻子//62 鼻中间//44-61 嘴巴//47 嘴巴上//53 嘴巴下/////////////////////////////////////////////////////////////////////////////////////////////////左眼中间for(var p = 27; p <= 27; p++) {cc.beginPath();cc.arc(positions[p][0].toFixed(2), positions[p][1].toFixed(2), 2, 0, Math.PI * 2, true);cc.closePath();cc.fillStyle = 'red';cc.fill();}//鼻子中间for(var p = 62; p <= 62; p++) {cc.beginPath();cc.arc(positions[p][0].toFixed(2), positions[p][1].toFixed(2), 2, 0, Math.PI * 2, true);cc.closePath();cc.fillStyle = 'red';cc.fill();}//嘴巴上for(var p = 57; p <= 57; p++) {cc.beginPath();cc.arc(positions[p][0].toFixed(2), positions[p][1].toFixed(2), 2, 0, Math.PI * 2, true);cc.closePath();cc.fillStyle = 'red';cc.fill();}//嘴巴下for(var p = 60; p <= 60; p++) {cc.beginPath();cc.arc(positions[p][0].toFixed(2), positions[p][1].toFixed(2), 2, 0, Math.PI * 2, true);cc.closePath();cc.fillStyle = 'red';cc.fill();}////////////////////////////////////////headif(is_alive_head == true) {if(last_time == 0 || (new Date().getTime() - last_time > 500 && new Date().getTime() - last_time < 10000)) {var xdiff_left = positions[62][0] - positions[2][0];var ydiff_left = positions[62][1] - positions[2][1];var dis_left = Math.pow((xdiff_left * xdiff_left + ydiff_left * ydiff_left), 0.5);var xdiff_right = positions[12][0] - positions[62][0];var ydiff_right = positions[12][1] - positions[62][1];var dis_right = Math.pow((xdiff_right * xdiff_right + ydiff_right * ydiff_right), 0.5);var xdiff_side = positions[12][0] - positions[2][0];var ydiff_side = positions[12][1] - positions[2][1];var dis_side = Math.pow((xdiff_side * xdiff_side + ydiff_side * ydiff_side), 0.5);var dis_left_right = dis_left - dis_right;document.getElementById('result').value = dis_left_right;if(last_dis_left_right > 0 && dis_left_right > dis_side / 3) {document.getElementById('result').value = "通过";var msg_m =document.getElementById('result'); if(msg_m.value=='通过'){//执行其他方法is_head_ok = true;is_alive_head = false;location.href="http://muxiongxiong.top"}}last_dis_left_right = dis_left_right;last_time = new Date().getTime();}}///////////////////////////////////////mouse if(is_alive_mouse == true) {if(last_time == 0 || (new Date().getTime() - last_time > 500 && new Date().getTime() - last_time < 10000)) {//研究和鼻子距离var xdiff = positions[62][0] - positions[27][0];var ydiff = positions[62][1] - positions[27][1];var dis_eye_norse = Math.pow((xdiff * xdiff + ydiff * ydiff), 0.5);//上嘴唇 和下嘴唇距离var xdiff_mouse = positions[53][0] - positions[47][0];var ydiff_mouse = positions[53][1] - positions[47][1];var dis_mouse = Math.pow((xdiff_mouse * xdiff_mouse + ydiff_mouse * ydiff_mouse), 0.5);//上次的眼鼻距离和这次的眼鼻距离差var dn = Math.abs(dis_eye_norse - last_dis_eye_norse);//上次的嘴距离和本次的嘴距离差var dm = Math.abs(dis_mouse - last_dis_mouse);//鼻子的位置确保变化不大if(last_nose_left > 0 && last_nose_top > 0 &&Math.abs(positions[62][0] - last_nose_left) < 5 &&Math.abs(positions[62][1] - last_nose_top) < 5) {document.getElementById('msg').innerHTML = dn;if(last_dis_eye_norse > 0 && dn < dis_eye_norse * 1 / 50) {if(last_dis_mouse > 0 && dm > dis_mouse / 10) {document.getElementById('result').value = "通过";var msg_mouse = document.getElementById('result');if(msg_mouse.value=='通过'){//验证摇头is_alive_mouse = false;is_mouse_ok = true;var audio = document.createElement('audio');var source = document.createElement('source');source.type = "audio/mp3";source.src = "mp3/alive_head.mp3";source.autoplay = "autoplay";source.controls = "controls";audio.appendChild(source);audio.play();alive_head();}}}}last_dis_mouse = dis_mouse;last_dis_eye_norse = dis_eye_norse;last_time = new Date().getTime();last_nose_left = positions[62][0];last_nose_top = positions[62][1];}}///////////////////////////////////////eye if(is_alive_eye == true) {if(last_time == 0 || (new Date().getTime() - last_time > 10)) {var xdiff1 = positions[62][0] - positions[27][0];var ydiff1 = positions[62][1] - positions[27][1];var dis_eye_norse1 = Math.pow((xdiff1 * xdiff1 + ydiff1 * ydiff1), 0.5);var xdiff2 = positions[62][0] - positions[32][0];var ydiff2 = positions[62][1] - positions[32][1];var dis_eye_norse2 = Math.pow((xdiff2 * xdiff2 + ydiff2 * ydiff2), 0.5);var dis_eye_norse = (dis_eye_norse1 + dis_eye_norse2);if(last_nose_left > 0 && last_nose_top > 0 &&Math.abs(positions[62][0] - last_nose_left) < 0.5 &&Math.abs(positions[62][1] - last_nose_top) < 0.5) {document.getElementById('msg').innerHTML = Math.abs(dis_eye_norse - last_dis_eye_norse) - dis_eye_norse * 1 / 20;if(last_dis_eye_norse > 0 && (Math.abs(dis_eye_norse - last_dis_eye_norse) > dis_eye_norse * 1 / 20)) {document.getElementById('result').value = "通过";is_alive_eye = false;is_eye_ok = true;}}last_nose_left = positions[62][0];last_nose_top = positions[62][1];last_dis_eye_norse = dis_eye_norse;last_time = new Date().getTime();}}}requestAnimationFrame(drawLoop);}drawLoop();}

纯js实现人脸识别眨眨眼张张嘴案例——alive_face.js相关推荐

  1. 人脸识别眨眼张嘴软件_纯js实现人脸识别眨眨眼张张嘴案例——alive_face.js

    $(function(){ //执行开始的方法 //showpos = true; startTrack(); }) var showpos = false; // Put event listene ...

  2. 纯前端JS实现人脸识别眨眨眼张张嘴案例

    在不久之前我发布了一个案例,是java通过百度云人脸识别接口实现活体检测(张张嘴和眨眨眼)的案例,大家可以去看看:人脸识别活体检测之眨眨眼和张张嘴,今天我就抽空更新一下纯JS的活体检测吧. 首先给大家 ...

  3. 纯前端实现人脸识别-提取-合成

    2017-09-17 前端大全 (点击上方公众号,可快速关注)   来源:雅X共赏 http://refined-x.com/2017/09/06/纯前端实现人脸识别-提取-合成/ 如有好文章投稿,请 ...

  4. java+js实现人脸识别-基于百度api

    java+js实现人脸识别-基于百度api 我的第一次分享 第一步-我们了解下实现的思路 代码部分:1.js代码 2.后台代码 3.如何使用百度大脑 4.如何使用 navigator.mediaDev ...

  5. vue3 基于faceapi.js实现人脸识别

    vue3 基于faceapi.js实现人脸识别 先贴代码 <template><div class="app-container"><div>{ ...

  6. 人脸识别眨眼张嘴软件_人脸识别张张嘴眨眨眼jar、css、js

    [实例简介] 人脸识别jar包.js和css,相关代码已经发至博客,感兴趣的可以去博客中看看 [实例截图] [核心代码] js.css和jar包 └── js.css和jar包 ├── css │   ...

  7. vue基于face-api.js实现人脸识别

    一.face-api.js Face-api.js 是一个 JavaScript API,是基于 tensorflow.js 核心 API 的人脸检测和人脸识别的浏览器实现.它实现了一系列的卷积神经网 ...

  8. java实现人脸识别(使用百度云V3版本)

    2017年,开发了第一个版本的人脸识别,当时费时有5天之久终于写出来了,但是只适用于火狐浏览器,别的浏览器都打不开摄像头. 2018年,将人脸识别重新完善,可以支持360.火狐.谷歌等主流浏览器,版本 ...

  9. 吗咿呀嘿-用js来搞个简单的人脸识别

    缘起 "蚂蚁呀嘿,蚂蚁呀呼,蚂蚁呀哈" 相信最近好多人的朋友圈或者抖音都被类似视频刷过屏! 类似的效果最早是在2020年初,那个时候大家应该还都记得,几乎所有的人都因为疫情原因被迫 ...

最新文章

  1. 深度学习笔记第二门课 改善深层神经网络 第二周:优化算法
  2. WinForm窗体中如何在一个窗体中取到另一个窗体的值
  3. delphi 算术溢出解决方法_性能优化系列:JVM 内存划分总结与内存溢出异常详解分析...
  4. Linux下的MySQL测试,Linux下MySQL命令(1)
  5. Project facet Dynamic Web Module version 3.1 is not supported.
  6. firefox 和 ie 事件处理的细节,研究,再研究-----书写同时兼容ie和ff的事件处理代码...
  7. chrome html 读写文件路径,Chrome浏览器支持直接读写本地文件了
  8. php---自动生成flash图表(包括你想要的其他类型的图表)
  9. c#连mysql的latin1编码乱码问题
  10. 数据结构之查找-顺序查找,折半查找,分块查找
  11. win10系统可禁用的服务器,Win10系统SysMain服务是什么?Win10系统SysMain能不能禁用?...
  12. 电子邮件是html文件吗,如何在电子邮件正文中嵌入HTML文件
  13. 蜜罐合约-老版本solidity引用类型的一个坑
  14. vulhub漏洞复现- ActiveMQ 反序列化漏洞(CVE-2015-5254)
  15. 4g 访问App 慢的原因
  16. 情人节程序员用HTML网页表白【在一起计时】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  17. android系统开机logo定制
  18. 关于UE5角色动画蓝图的基本操作(基础向)
  19. 试题B:灭鼠先锋[博弈]
  20. centos7安装Kafka Eagle

热门文章

  1. android中弹出窗口,如何在Android中创建弹出窗口(PopupWindow)
  2. CF1486B Eastern Exhibition
  3. 牛客题霸 [滑动窗口的最大值] C++题解/答案
  4. hdu 1576 A/B
  5. [AtCoder Beginner Contest 215] A-G题解
  6. [COCI2017-2018#5] Karte
  7. 模板:拓展kmp(Z函数)
  8. CF183C:Diverse Permutation(构造)
  9. AT1981-[AGC001C]Shorten Diameter
  10. jzoj3783-[NOIP2014模拟8.19]签到题【结论题】