uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件
插件亮点
1 支持安卓平板(横竖屏均可),苹果的iPad。2 颜色图片均可更换。
特别提醒
此插件包含 android 端和 iOS 端,考虑到有些同学只做其中一个端的 app,特意分为 2 个插件,减小安装包体积。android 端请点击这里。iOS 端请点击这里。
1、前言
最近在使用 uniapp 开发项目,有刷脸实名认证的需求,最终使用百度人脸识别实现了需求。自己做了个 APP 原生插件,给大家介绍下用法。本插件主要功能是通过动作检测活体,采集人脸返回。其他功能需要自主实现,如刷脸登录,实名认证等。
2、包名及签名证书准备
包名安卓和 iOS 可填写一样的:com.longyoung.baidudemo(一般用反域名,如我的域名:www.longyong.com)。注意:uniapp 打包或者打基座要用这个包名。申请百度授权文件,需要用到安卓签名证书的 md5,如果你们公司有原生开发团队,问他们要即可。没有的话,自己生成一个签名证书并获取它的 md5,点击查看方法。注意:uniapp 打包或者打基座要用这个签名证书。
3、百度官方资料准备
百度人脸识别申请授权文件步骤要领,点击查看方法。
4、接入步骤
4.1 在项目根目录创建文件夹 nativeplugins,购买插件(建议测试版本点击购买下方的试用,正式发布的时候再购买)。
4.2 将百度授权文件 License 放到安卓:nativeplugins/longyoung-BDFaceAuth/android/assets/idl-license.face-android;iOS:nativeplugins/longyoung-BDFaceAuth-iOS/ios/idl-license.face-ios。没路径的请自行创建,nativeplugins 文件夹在项目根目录下。注意 iOS 没有 assets 文件夹,直接放到 ios 文件夹下。
4.3 manifest.json 文件,选中「App原生插件配置」,选中云端插件,勾选插件 longyoung-BDFaceAuth 和 longyoung-BDFaceAuth-iOS。
4.4 调用插件,需要传入 licenseID(必传,百度上的 License ID),动作控制参数 actionAry(选传,不传只采集脸,没有动作),动作是否随机参数 isLivenessRandom(选传),是否有声音参数 isSound(选传,iOS 不支持),文字颜色 txtColor(选传),背景颜色 bgColor(选传,iOS 无效),圆的颜色 roundColor(选传),代码如下:
<script>
var lyBDFaceAuth;
var lyBDFaceAuthIOS;
export default {
data() {
return {
title: ''
}
},
onLoad() {
// #ifdef APP-PLUS
if (uni.getSystemInfoSync().platform == "ios") {
//引用插件
lyBDFaceAuthIOS = uni.requireNativePlugin('longyoung-BDFaceAuth-iOS'); //ios
} else if (uni.getSystemInfoSync().platform == "android") {
//引用插件
lyBDFaceAuth = uni.requireNativePlugin('longyoung-BDFaceAuth'); //android
}
// #endif
},
methods: {
onScanFace() {
console.error("tagg.onScanFace");
if (uni.getSystemInfoSync().platform == "android") {//安卓
lyBDFaceAuth.scanFace({
licenseID:"longyoung-face-android",//必须与百度授权资料一致
actionAry:["Eye", "Mouth", "HeadLeft", "HeadRight", "HeadLeftOrRight", "HeadUp", "HeadDown"],//不传无动作
isLivenessRandom:0,//不传默认有序,0有序,1随机
isSound:0,//不传默认有声音,0无声,1有声,iOS无效
txtColor:"#3987FD",//文字颜色
bgColor:"#3987FD", //背景颜色,iOS设置无效,需要换图片facecover_new.png,路径 nativeplugins\longyoung-BDFaceAuth-iOS\ios\com.baidu.idl.face.faceSDK.bundle,具体看示例。
roundColor:"#3987FD"//圆的颜色
}, result => {
console.log('file://' + result.imgPath);
//图片上传服务器
uni.uploadFile({
url:'http://api.longyoung.com/api/open/common/uploadImgTemp',//图片上传地址
filePath: 'file://' + result.imgPath,//图片本地路径,上传服务器需要加这个头'file://'
method: 'post',
name: 'imgFile',//上传图片参数名
success: (res) => {
var data = res.data;
}
});
//***有些同学反馈,后台强烈要求传base64,下面是图片转base64的方法,没此需求的可以无视。
var bitmapT = new plus.nativeObj.Bitmap("test"); //test标识谁便取
// 从本地加载Bitmap图片
bitmapT.load(result.imgPath, function() {
console.log('加载图片成功');
var base4 = bitmapT.toBase64Data();
console.log('lygg.base64=' + base4);
}, function(e) {
console.log('加载图片失败:' + JSON.stringify(e));
});
//***有些同学反馈,后台强烈要求传base64,下面是图片转base64的方法,没此需求的可以无视。
});
}
else if (uni.getSystemInfoSync().platform == "ios") {//苹果
lyBDFaceAuthIOS.scanFace({
licenseID: "longyoung-face-ios",//必须与百度授权资料一致
actionAry:["Eye", "Mouth", "HeadLeft", "HeadRight", "HeadLeftOrRight", "HeadUp", "HeadDown"],//不传无动作
isLivenessRandom:0,//不传默认有序,0有序,1随机
isSound:0,//不传默认有声音,0无声,1有声,iOS无效
txtColor:"#3987FD",//文字颜色
bgColor:"#3987FD", //背景颜色,iOS设置无效,需要换图片facecover_new.png,路径 nativeplugins\longyoung-BDFaceAuth-iOS\ios\com.baidu.idl.face.faceSDK.bundle,具体看示例。
roundColor:"#3987FD"//圆的颜色
}, result => {
console.log('result=' + result);//图片存在 result.bestImgBase64,显示图片需要加头"data:image/png;base64," + result.bestImgBase64.replace(/[\r\n]/g, "")
//***不传base64的,看这里,使用 uni.uploadFile()上传服务器,没此需求的可以无视。
var bitmapT = new plus.nativeObj.Bitmap('test');
//加载base64图片
bitmapT.loadBase64Data(result.bestImgBase64, function(res){
//保存base64图片
bitmapT.save("_faceImg/face.png", {}, function(res){
bitmapT.clear();//销毁bitmap对象
//图片上传服务器
//使用 uni.uploadFile()上传服务器,filePath=res.target
uni.uploadFile({
url: 'http://api.longyoung.com/api/open/common/uploadImgTemp', //图片上传地址
filePath: res.target,
method: 'post',
name: 'imgFile', //上传图片参数名
success: (res) => {
var data = res.data;
}
});
}, function(res){
console.log("longyoung.save.fail=", res);
});
}, function(res){
console.log("longyoung.fail=", res);
});
//***不传base64的,看这里,使用 uni.uploadFile()上传服务器,没此需求的可以无视。
});
}
},
}
}
</script>
4.5 图片更换
在对应目录放相应图片(如:close_new.png,success_new.png,warning_new.png),不放使用默认图片,详情可看示例代码。
4.6 打自定义基座(以安卓为例,iOS 类似)
需要打自定义基座才可以进行测试,运行->运行到手机或模拟器->制作自定义基座。注意事项看图片,请使用自己的证书(就是签名文件.jks),申请百度授权文件的时候填写这个证书的 md5。每次打自定义基座的时候,最好先把旧的基座删除(如果存在),路径在根目录下的 unpackage 文件夹里面(LyBDFaceAuthDemo\unpackage\debug\android_debug.apk)。
4.7 勾选自定义基座后运行
运行->运行到手机或模拟器->运行基座选择,勾选自定义调试基座,之后运行到设备,如下图。
5、注意事项
5.1 安卓图片存到本地缓存目录,/storage/emulated/0/Android/data/com.longyoung.facedemo/cache/faceImg/face1573781316334.png,上传服务器需要加这个头'file://'。如需要传base64格式,请看上面示例代码。
5.2 iOS 返回的图片为base64格式,请看上面示例代码。
5.3 公众号「longyoung」后台回复「百度人脸识别」获取。
6、版权声明
版权归开发者所有,未经授权同意,不得分享源码。
uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件的更多相关文章
- 基于python的人脸识别(检测人脸、眼睛、嘴巴、鼻子......)
本文链接:https://blog.csdn.net/James_Ray_Murphy/article/details/79209172 import numpy as np import cv2 # ...
- 3D动态人脸识别技术分析——世纪晟人脸识别实现三维人脸建模
- 目录 - 国内3D动态人脸识别现状概况 - 新形势下人脸识别技术发展潜力 - 基于深度学习的3D动态人脸识别技术分析 1. 非线性数据建模方法 2. 基于3D变形模型的人脸建模 - 案例结合——世 ...
- 从零玩转人脸识别之RGB人脸活体检测
从零玩转RGB人脸活体检测 前言 本期教程人脸识别第三方平台为虹软科技,本文章讲解的是人脸识别RGB活体追踪技术,免费的功能很多可以自行搭配,希望在你看完本章课程有所收获. ArcFace 离线SDK ...
- 基于HTML5 的人脸识别活体认证
近几年,人脸识别技术在身份认证领域的应用已经有了较多应用,例如:支付宝.招行的取款.养老金领取等方面,但在杜绝假冒.认证安全性等方面,目前还是一个比较需要进一步解决的课题,特别是在移动端的活体认证技术 ...
- 利用百度接口进行人脸识别并保存人脸jpg文件
利用百度接口进行人脸识别,根据返回的人脸location用opencv切割保存. # coding : UTF-8 from aip import AipFace import cv2 import ...
- opencv+opencv_contrib 人脸识别和检测 python开发环境快速搭建(30分钟)图文教程
很多朋友为了学习python.ML(机器学习).DL(深度学习).opencv等花费了大量时间配置安装环境(一个朋友花了4天时间才配置好)各种搜索.下载.安装配置,出问题等. 市面上的配置资料很多,选 ...
- 基于MTCNN多任务级联卷积神经网络进行的人脸识别 世纪晟人脸检测
神经网络和深度学习目前为处理图像识别的许多问题提供了最佳解决方案,而基于MTCNN(多任务级联卷积神经网络)的人脸检测算法也解决了传统算法对环境要求高.人脸要求高.检测耗时高的弊端. 基于MTCNN多 ...
- iOS开发中使用CIDetector检测人脸
在iOS5 系统中,苹果就已经有了检测人脸的api,能够检测人脸的位置,包括左右眼睛,以及嘴巴的位置,返回的信息是每个点位置.在 iOS7中,苹果又加入了检测是否微笑的功能.通过使用 CIDetect ...
- openCV+ASM+LBP+Gabor实现人脸识别(GT人脸库)
原理:使用GT人脸库做样本,VS2010下使用openCV2.44自带的Haar算法检測人脸区域,ASM Library特征检測,然后使用YCrCb颜色空间做肤色检測,再用LBP+Gabor小波提取特 ...
随机推荐
- ArcGIS 如何设置地图显示范围大小
说来惭愧,学ArcGIS也已经有两年了.今天才知道原来ArcGIS是可以设置地图显示范围大小的 打开ArcMap,选择左边图例的图层(Layers) ,右键点击,选择属性(Properties..), ...
- 蓝牙(3)蓝牙UUID与SDP
1.服务发现协议 (SDP) SDP = Service Discovery Protocol 主要用来根据已分配编号(UUID)搜索服务.浏览群组列表.文档 URL 和图标 URL等. 详细见: ...
- LeetCode74 Search a 2D Matrix
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- 逗号分隔的字符串转换为Python中的列表 split
将逗号分隔的字符串转换为Python中的列表 给定一个字符串: 它是由逗号分隔的几个值的序列: mStr = '192.168.1.1,192.168.1.2,192.168.1.3' 如何将字符 ...
- 洛谷P2455 [SDOI2006]线性方程组
高斯消元模板 要求输出解的情况(无穷解/无解) 1. 之前写的丑陋代码 #include <iostream> #include <cstdio> #include <c ...
- php开发微信支付获取用户地址
http://mp.weixin.qq.com/s/uNpWE_Z5RZ48PDIWkmGBYQ 使用微信获取地址信息是和微信支付一道申请的,微信支付申请通过,就可以使用该功能. 微信商城中,使用微信 ...
- uva 11665 Chinese Ink (几何+并查集)
UVA 11665 随便给12的找了一道我没做过的几何基础题.这题挺简单的,不过uva上通过率挺低,通过人数也不多. 题意是要求给出的若干多边形组成多少个联通块.做的时候要注意这题是不能用double ...
- MySQL锁的用法之行级锁
行级锁是MySQL中粒度最小的一种锁,他能大大减少数据库操作的冲突.但是粒度越小,实现的成本也越高.MYISAM引擎只支持表级锁,而INNODB引擎能够支持行级锁,下面的内容也是针对INNOD ...
- Java 简单校验框架
数据校验框架现状 在我们的方法入口后面,难免会有如下样子的代码: result.setSuccess(false); if (StringUtils.isBlank(bizOrder.getThird ...
- H3C 网络层