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、版权声明

版权归开发者所有,未经授权同意,不得分享源码。

原文地址:https://www.cnblogs.com/longyoung/p/12121568.html

时间: 2024-10-12 15:24:53

uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件的相关文章

人脸识别活体检测技术讨论:基于背景人脸相对运动的活体判断方法

活体检测是人脸识别安全性的重要保障,是人脸识别厂商将产品普及应用于各行业的重要竞争力.目前活体判断的方法很多,但很难基于一种方法就能达到理想的效果,往往需要多种算法的交叉判断,本文主要介绍一种简单有效的活体判断方法.在很多情况下,高清照片和真人在某些光线条件下在相机中的成像很接近,这就导致仅仅基于面部的特征很难准确判断活体.在大部分场景下,人手拿着照片,手机或者pad不会完全静止不动,而在有运动时,真人和照片的区别很大:真实人脸运动与背景无相关性,照片,手机或者Pad在运动时,人脸运动与周围背景

腾讯技术工程 |腾讯AI Lab刷新人脸识别与检测两大测评国际记录,技术日调用超六亿

2017年12月18日,深圳 - 腾讯AI Lab研发的Face R-FCN和FaceCNN算法分别在国际最大.最难的人脸检测平台WIDER FACE与最热门权威的人脸识别平台MegaFace多项评测指标中荣膺榜首,刷新行业纪录,展现其在计算机视觉领域中,特别是人脸技术上的强劲实力. 研究上,目前腾讯AI Lab已通过arXiv平台发表论文公开人脸检测算法部分技术细节,促进企业与学界"共享AI"研究成果:应用上,该人脸技术已接入腾讯互联网+公共服务平台等多个应用场景,每日技术调用量超六

【人脸识别】初识人脸识别

[人脸识别]初识人脸识别 /* Author:    cyh_24 */ /* Date:        2014.10.2 */ /* Email:    [email protected] */ /* More:    http://blog.csdn.net/cyh_24  */ 由于导师给我们布置了每周阅读两篇大牛论文,并写ppt的任务.反正ppt都写了,所以我想干脆直接把ppt的内容再整理一下写成博客.近期的阅读论文都是人脸识别相关的主题. 如果你研究过人脸识别,或者对这方面有兴趣,那

openCV+ASM+LBP+Gabor实现人脸识别(GT人脸库)

原理:使用GT人脸库做样本,VS2010下使用openCV2.44自带的Haar算法检測人脸区域,ASM Library特征检測,然后使用YCrCb颜色空间做肤色检測,再用LBP+Gabor小波提取特征,最小邻近距离做分类识别. 1.GT人脸库 Georgia Tech face database,网址:http://www.anefian.com/research/face_reco.htm GT人脸库包括50个人,每人15张不同角度.不同表情的正面照片. 图片为JPG格式,640*480,大

android人脸识别活体识别人脸动作活体静默活体Demo源码实现讲解

这里说活体是基于单目摄像头活体,适合所有普通安卓Android 单目摄像头的手机,双目的需要硬件支持,这里不讲述 . 体验地址: https://pan.baidu.com/s/1i5oXoJ7 下一章讲述静默活体实现原理 里面含有表情识别: 人脸动作活体: ? 头部 左摆 右摆 上抬 下低 , 眼睛,张开 闭眼 睁大眼 嘴巴:张开 合并 这些实验原理是根据人脸特征点,根据位置规则测算出来的,其实不难. 表情识别: 检测微笑 大笑 假笑 亲嘴 使眼色 失望 愤怒 吐舌/鬼脸 脸红/瞪眼 尖叫/惊

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

近几年,人脸识别技术在身份认证领域的应用已经有了较多应用,例如:支付宝.招行的取款.养老金领取等方面,但在杜绝假冒.认证安全性等方面,目前还是一个比较需要进一步解决的课题,特别是在移动端的活体认证技术方面. 本文介绍了在HTML5 环境下可以采用clmtrackr.js 检测工具,结合人脸模型,实现人脸的跟踪检测.同时采用动作识别实现活体认证. 但本方案只能够在Firefox 或者Chrome中使用.并且只适合研究学习,实际场景中不太理想,需要进一步优化才能够应用. 如果有人有相关的技术,可以推

人脸识别活体识别源码APP后台接口设计

Android softboy人脸识别源码APP后台接口设计,这个是最近开发的一个人脸识别人脸系统框架,系统内容比较复杂.这里简化了主要的接口与数据,然后结合 softboy人脸识别app,就可以体验极速的人脸识别考勤体验. 这个离线app支持上传考勤记录,下载人脸数据进行离线人脸识别和活体检测,有限规避相片打卡视频欺骗等. 这个APP的下载体验地址https://pan.baidu.com/s/1i5oXoJ7 接下来看一下接口功能设计,还原提意见哦.慢慢的福利,正在做的朋友可以直接下载参考.

人脸识别系列之人脸检测--训练基于肤色特征的检测

前言: 基于特征的方法是利用人脸的先验知识导出的规则进行人脸检测. 一般来说,常用的特征包括人脸和人脸器官典型的边缘和形状特征(如人脸轮廓.虹膜轮廓.嘴唇轮廓等).纹理特征(纹理是在图上表现为灰度或颜色分布的某种规律性,这种规律性在不同类别的纹理中有其不同特点,人脸有其特定的纹理特征).颜色特征(人脸肤色特征,目前主要有RGB,HSV,YCbCr,YIQ,HIS等彩色空间模型被用来表示人脸的肤色,从而进行基于颜色信息的人脸检测方法的研究). 人脸检测的方法: 基于规则/知识方法 – 人脸模式的变

iOS开发中使用CIDetector检测人脸

在iOS5 系统中,苹果就已经有了检测人脸的api,能够检测人脸的位置,包括左右眼睛,以及嘴巴的位置,返回的信息是每个点位置.在 iOS7中,苹果又加入了检测是否微笑的功能.通过使用 CIDetector可以实现上述功能,一个小demo如下: #import <CoreImage/CoreImage.h> //首先包含响应的头文件 /** * 用来存储检测到的信息 */ @property (nonatomic,strong) NSArray *features; //正式代码如下: UIIm