人脸识别、活体检测(眨眼、摇头、张嘴动作)clmtrackr
人脸识别、活体检测(眨眼、摇头、张嘴动作)项目总结
项目需求 / 步骤实现描述:
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);
}
...
...
})
人脸识别、活体检测(眨眼、摇头、张嘴动作)clmtrackr的更多相关文章
- 基于HTML5 的人脸识别活体认证
近几年,人脸识别技术在身份认证领域的应用已经有了较多应用,例如:支付宝.招行的取款.养老金领取等方面,但在杜绝假冒.认证安全性等方面,目前还是一个比较需要进一步解决的课题,特别是在移动端的活体认证技术 ...
- opencv+opencv_contrib 人脸识别和检测 python开发环境快速搭建(30分钟)图文教程
很多朋友为了学习python.ML(机器学习).DL(深度学习).opencv等花费了大量时间配置安装环境(一个朋友花了4天时间才配置好)各种搜索.下载.安装配置,出问题等. 市面上的配置资料很多,选 ...
- 基于python的人脸识别(检测人脸、眼睛、嘴巴、鼻子......)
本文链接:https://blog.csdn.net/James_Ray_Murphy/article/details/79209172 import numpy as np import cv2 # ...
- Python3+Dlib实现简单人脸识别案例
Python3+Dlib实现简单人脸识别案例 写在前边 很早很早之前,当我还是一个傻了吧唧的专科生的时候,我就听说过人脸识别,听说过算法,听说过人工智能,并且也出生牛犊不怕虎般的学习过TensorFl ...
- 基于iOS用CoreImage实现人脸识别
2018-09-04更新: 很久没有更新文章了,工作之余花时间看了之前写的这篇文章并运行了之前写的配套Demo,通过打印人脸特征CIFaceFeature的属性,发现识别的效果并不是很好,具体说明见文 ...
- 百度离线人脸识别sdk的使用
1.1下载sdk运行 百度离线人脸识别sdk的使用 1.2配置环境 添加至项目,可以拖动复制或者以类库形式添加face-resource此文件夹 放到根目录上一层 激活文件与所有dll引用放到根目录嫌 ...
- MFC中利用Opencv与C++抓取摄像头进行人脸识别(Mat)
原文:http://blog.csdn.net/mr_curry/article/details/51098311 第一次写博客哈哈,有些小激动,还请各位大神多多包涵~ 最近的项目需要用到人脸识别,作 ...
- 人脸识别FaceNet+TensorFlow
一.本文目标 利用facenet源码实现从摄像头读取视频,实时检测并识别视频中的人脸.换句话说:把facenet源码中contributed目录下的real_time_face_recognition ...
- 6-9 Haar+adaboost人脸识别
我们重点分析了Haar特征的概念以及如何计算Haar特征,并介绍了Haar+Adaboost分类器它们的组合以及Adaboost分类器如何使用和训练.这节课我们将通过代码来实现一下Haar+Adabo ...
随机推荐
- 实现一个Prometheus exporter
Prometheus 官方和社区提供了非常多的exporter,涵盖数据库.中间件.OS.存储.硬件设备等,具体可查看exporters.exporterhub.io,通过这些 exporter 基本 ...
- 苹果手机和Windows之间互传文件
参考链接:https://jingyan.baidu.com/article/a378c960c46804f229283064.html 实现原理:就是使用Samba服务,windows共享一个文件夹 ...
- LabVIEW图形化的AI视觉开发平台(非NI Vision),大幅降低人工智能开发门槛
前言 之前每次进行机器学习和模型训练的时候发现想要训练不同模型的时候需要使用不同的框架,有时候费了九牛二虎之力终于写下了几百行代码之后,才发现环境调试不通,运行效率也差强人意,于是自己写了一个基于La ...
- Javascript 函数声明、调用、闭包
1 # Javascript 函数声明.调用.闭包 2 # 一.函数声明 3 # 1.直接声明.浏览器在执行前,会先将变量和函数声明进行提升. 4 fn(); 5 function fn () { 6 ...
- Chapter 02 - Let's Get Started(C#篇)
详细解释,书上有哈.直接上代码和结果. Xcode下的自定义类 (通过new file-> cocoa class创建,保持和书中名字一样RandomController),自定义的fields ...
- mui 登录跳转到首页之后顶部选项卡不灵敏问题
前段时间开发一个用mui开发app的时候遇到了登录跳转到首页之后顶部选项卡会失灵的问题,多次尝试之后终于解决了,趁现在还有点印象记录一下吧. 一开始我是用mui.openWindow来新开首页的,出了 ...
- 用 Scanner 扫描CSV文件时报错:“java.util.nosuchelementexception:no line found”的解决方法
最近用 java 对一个很大的 CSV 文件进行处理.打算用 Scanner 逐行扫描进来,结果报错 "java.util.nosuchelementexception:no line fo ...
- .Net Core使用Coravel实现任务调度
前言 前段时间需要在一个新项目里添加两个后台任务,去定时请求两个供应商的API来同步数据:由于项目本身只是一个很小的服务,不太希望引入太重的框架,同时也没持久化要求:于是我开始寻找在Quartz.Ne ...
- GIL互斥锁与线程
GIL互斥锁与线程 GIL互斥锁验证是否存在 """ 昨天我们买票的程序发现很多个线程可能会取到同一个值进行剪除,证明了数据是并发的,但是我们为了证明在Cpython中证 ...
- 内网渗透之vlunstack靶场
前言:vlunstack靶场是由三台虚拟机构成,一台是有外网ip的windows7系统(nat模式),另外两台是纯内网机器(外网ping不通),分别是域控win2008和内网主机win2003,这里就 ...