人脸识别、活体检测(眨眼、摇头、张嘴动作)项目总结

项目需求 / 步骤实现描述:

1、申请摄像头权限,开始识别面部信息、同时开始录像 ;

2、随机顺序生成面部检验动作;

3、并开始倒计时,需10s内完成该组检验动作;

4、完成动作通过后,停止录像。

5、截取一张图片;并将录像和图片、检验动作、检验结果上传后台保存;

6、上传成功根据返回结果登录系统页面。

一、遇到的问题及解决方案

问题1、ios苹果系统在微信中允许摄像头权限后,页面无人像并一片空白问题。或是有些苹果机需要手动点击页面的视频播放才能出现视频人像;

  因为微信浏览器没有开启ios摄像头的权限,所以才会出现有些需要手动再次点击播放才能出现。 (ios系统安全机制,需使用自带的safari浏览器才可以有权限)

问题2、ios或是部分手机的视频录制格式 MediaRecorder-MIME 格式被客户端录制;

问题1解决方案:

创建页面监听(WeixinJSBridgeReady)
        原理:对页面加载进行监听,等待微信客户端页面加载完毕后,自动触发音频播放

<video id="Video" preload autoplay loop muted webkit-playsinline="true" playsinline="true"></video>
<script> // 使用微信自带的WeixinJSBridgeReady事件 document.addEventListener('WeixinJSBridgeReady', function() {     document.getElementById('Video').play() })
</script>

问题2解决方案:

增加类型的判断

var p = navigator.mediaDevices.getUserMedia({ audio: true, video: true });
p.then(function(stream) {
var _this = this;
console.log('stream.id----', stream.id);
var options = {
mimeType: 'video/webm;codecs=vp9' // '默认'
}; if (!MediaRecorder.isTypeSupported(options.mimeType)) {
logger('ondataavailable', 'MIME 格式无法被客户端录制');
var types = [
'video/webm\;codecs=vp8',
'audio/mp4',
'video/mp4',
'video/webm',
'audio/webm',
'video/webm\;codecs=daala',
'video/webm\;codecs=h264',
'audio/webm\;codecs=opus',
'video/mpeg'
]; for (var i in types) {
logger('判断类型: ', types[i]);
if (MediaRecorder.isTypeSupported(types[i])) {
options.mimeType = types[i]
logger('MediaRecorder-MIME 录制类型: Maybe!', types[i]);
break
}
}
} if (!MediaRecorder.isTypeSupported) {
options.mimeType = 'audio/mp4'
}
_this.recoder = new MediaRecorder(stream, options);
console.log('stream', stream)
_this.recoder.ondataavailable = function (e) {
recodedBuffer.push(e.data);
logger('ondataavailable', '录制数据有效', e, e.data, e.data.size);
}
       ...
               _this.recoder.start();
               ...
})

人脸识别、活体检测(眨眼、摇头、张嘴动作)clmtrackr的更多相关文章

  1. 基于HTML5 的人脸识别活体认证

    近几年,人脸识别技术在身份认证领域的应用已经有了较多应用,例如:支付宝.招行的取款.养老金领取等方面,但在杜绝假冒.认证安全性等方面,目前还是一个比较需要进一步解决的课题,特别是在移动端的活体认证技术 ...

  2. opencv+opencv_contrib 人脸识别和检测 python开发环境快速搭建(30分钟)图文教程

    很多朋友为了学习python.ML(机器学习).DL(深度学习).opencv等花费了大量时间配置安装环境(一个朋友花了4天时间才配置好)各种搜索.下载.安装配置,出问题等. 市面上的配置资料很多,选 ...

  3. 基于python的人脸识别(检测人脸、眼睛、嘴巴、鼻子......)

    本文链接:https://blog.csdn.net/James_Ray_Murphy/article/details/79209172 import numpy as np import cv2 # ...

  4. Python3+Dlib实现简单人脸识别案例

    Python3+Dlib实现简单人脸识别案例 写在前边 很早很早之前,当我还是一个傻了吧唧的专科生的时候,我就听说过人脸识别,听说过算法,听说过人工智能,并且也出生牛犊不怕虎般的学习过TensorFl ...

  5. 基于iOS用CoreImage实现人脸识别

    2018-09-04更新: 很久没有更新文章了,工作之余花时间看了之前写的这篇文章并运行了之前写的配套Demo,通过打印人脸特征CIFaceFeature的属性,发现识别的效果并不是很好,具体说明见文 ...

  6. 百度离线人脸识别sdk的使用

    1.1下载sdk运行 百度离线人脸识别sdk的使用 1.2配置环境 添加至项目,可以拖动复制或者以类库形式添加face-resource此文件夹 放到根目录上一层 激活文件与所有dll引用放到根目录嫌 ...

  7. MFC中利用Opencv与C++抓取摄像头进行人脸识别(Mat)

    原文:http://blog.csdn.net/mr_curry/article/details/51098311 第一次写博客哈哈,有些小激动,还请各位大神多多包涵~ 最近的项目需要用到人脸识别,作 ...

  8. 人脸识别FaceNet+TensorFlow

    一.本文目标 利用facenet源码实现从摄像头读取视频,实时检测并识别视频中的人脸.换句话说:把facenet源码中contributed目录下的real_time_face_recognition ...

  9. 6-9 Haar+adaboost人脸识别

    我们重点分析了Haar特征的概念以及如何计算Haar特征,并介绍了Haar+Adaboost分类器它们的组合以及Adaboost分类器如何使用和训练.这节课我们将通过代码来实现一下Haar+Adabo ...

随机推荐

  1. do-while循环和三种循环的区别

    循环语句3--do...while do...while循环格式 初始化表达式① do{ 循环体③ 步进表达式④ }while(布尔表达式②); 执行流程 执行顺序:①③④>②③④>②③④ ...

  2. 云ATM架构设计

    云ATM架构设计 启动程序(Start.java) public class Start { public static void main(String[] args) { MainView vie ...

  3. 是时候优雅的和NullPointException说再见了

    是时候优雅的和NullPointException说再见了 ️️️️️️️️️️️️️️️️ 最近在参加原创投稿比赛,本篇文章如果对你有帮助的话,欢迎帮忙点击助力下吧 NullPointExcepti ...

  4. 2022-07-11 第六组 润土 JavaScript01学习笔记

    1.JS的数据类型: 数字 字符串 布尔型 空(null) unefined(未定义) 2.定义变量 var let(不可重复) const(常量不可更改) 3.复杂的数据类型: 数组:一个变量对应多 ...

  5. ajax01_基础知识

    ajax请求 ajax概述 组成:asynchronous + javascript + xml 特点: 可发送异步请求(这也是与传统请求方式的区别) 用javascript语言编写代码 前后端数据交 ...

  6. [HNOI2009]【一本通提高组合数学】有趣的数列

    [HNOI2009]有趣的数列 题目描述 我们称一个长度为 2 n 2n 2n 的数列是有趣的,当且仅当该数列满足以下三个条件: 它是从 1 ∼ 2 n 1 \sim 2n 1∼2n 共 2 n 2n ...

  7. python中print函数

    python中的输出函数 注意不是C中的printf 起作用就是将希望输出的内容输出在IDLE或标准的控制台上 python解释器将代码翻译成及其能听懂的语言,从而实现代码的实现 print的输出内容 ...

  8. Linux 系统时间同步服务器配置

    # Linux 时间同步 # 查看系统时间: date # 查看硬件日期 # ntp 软件 # chrony 软件 chrony比ntp更精确 # 利用ntp手动瞬间同步时间: ntpdate 172 ...

  9. Gumbel_Softmax 概要

    Gumble_Softmax 可以解决的问题 场景:对于一个分类任务,通常会使用softmax函数来将模型的输出值转换为概率的形式,并通过argmax函数取最大的概率值标签作为模型的预测标签.在分类任 ...

  10. AtCoder Educational DP Contest 总结

    前言 感觉都初一升初二了,再做这个题是不是有点太菜了啊-- 里面大概都是些 DP 板子题(确信,题目质量还挺高的,不过不涉及太难的优化(实际上只有最后一题是斜率优化). 不管了,还是写个 blog 来 ...