最近好多人找我要关于人脸识别活体检测的案例,今天正好有空我就更新一下,先解释一下活体,顾名思义就是看看是否是活人在测检(大白话解说),用技术上的话也就是看看当前操作者是否是在用照片或者其他方法来操作,比如我们的人脸识别,人脸登陆(想要了解的可以点击这里),存在一个最大的问题就是,当张三来登陆的时候如果张三本人登陆成功没有问题,要是张三拿着李四的照片来进行登陆,这也能登陆成功的话就是个最大的bug了,为此,我们来解决一下这个问题。
项目运行的截图大家先看看吧:
1.两张真人(同一个人)图片上传:
第一张:

第二张:

然后结果运行结果:

2.两张真人(不是同一个人)图片上传:
第一张:

第二张:

可以看出来,很明显不是同一个人,一个男的一个女的,运行结果:

3.第一张假的,第二张真的(同一个人)图片上传:
第一张:

这张照片是我手机第二次进行拍照所得的,

第二张:

运行结果为:

4.第一张真的,第二张假的(同一个人)图片上传:
第一张:

第二张:

运行结果为:

5.第一张假的,第二张真的(不同人)图片上传:
第一张:

第二张:

运行结果为:

6.第一张真的,第二张假的(不同人)图片上传:
第一张:

第二张:

运行结果为:

相信大家都理解了,那么我们来做一下吧!!

我们现在myeclipse里面创建个项目,普通的项目就OK啦。
喏,如图所示,项目名称我们就随便起个,就叫它:face_Live_test

然后点击finish,就完成了项目创建的第一步了。
我们在项目下面新建个目录,名字是lib,用来放我们的jar包吧,如图所示

jar包地址:点击下载
没有积分的可以联系我进行下载。
现在把jar导入到我们项目下面的lib目录中,接着新建个class,类名随便起,我这边的类名起的是TestMain.java。
创建好类之后就可以编码啦~
我们先要去百度云中创建个人脸识别的应用,我已经创建好了:

//百度云接口信息public static final String APP_ID = "********";public static final String API_KEY = "******";public static final String SECRET_KEY = "*********";public static  AipFace client = new AipFace(APP_ID, API_KEY, SECRET_KEY);

把代码中的*换成你自己的信息即可,这里不再多做解释。
然后我们重新创建个方法:
此方法代码如下:

/*** * @Description: 该方法的主要作用:人脸比对* @Title: match* @param  @param client 设定文件  * @return  返回类型:void   * @throws* 个人博客:https://blog.csdn.net/qq_34137397*/public static void match(AipFace client){// 传入可选参数调用接口HashMap<String, String> options = new HashMap<String, String>();//返回的活体信息,“faceliveness,faceliveness” 表示对比对的两张图片都做活体检测;//“,faceliveness” 表示对第一张图片不做活体检测、第二张图做活体检测;//“faceliveness,” 表示对第一张图片做活体检测、第二张图不做活体检测;options.put("image_liveness", "faceliveness,faceliveness");//参数为本地图片路径列表String path1 = "I:\\test\\picture\\1111.png";String path2 = "I:\\test\\picture\\psb.jpg";ArrayList<String> images = new ArrayList<String>();images.add(path1);images.add(path2);org.json.JSONObject res = client.match(images, options);//解析jsonJSONObject jsonObject = JSONObject.fromObject(res.toString(2));String ext_info = jsonObject.getString("ext_info");  // 找到ext_info节点JSONObject josnObject_ext_info = JSONObject.fromObject(ext_info);String faceliveness =  josnObject_ext_info.getString("faceliveness").toString();//根据,截取两个活体值,分别进行判断,逗号前面的代表第一章图片,后面的代表第二章图片int index_douhao = faceliveness.indexOf(",");Double first  = Double.parseDouble(faceliveness.substring(0,index_douhao));Double secord = Double.parseDouble(faceliveness.substring(index_douhao+1));//  活体分数,如0.49999。单帧活体检测参考阈值0.393241,大于该值就是活体,否则就是翻拍的if(first>0.393241){System.out.println("第一张是真人");if(secord>0.393241){System.out.println("第二张时真人");//继续判断是否是同一个人JSONArray jsonArray = jsonObject.getJSONArray("result");   //找到result节点String json_result = jsonArray.get(0).toString();JSONObject jsonObject_result = JSONObject.fromObject(json_result);Double score = Double.parseDouble(jsonObject_result.get("score").toString());//分数大于80算同一个人System.out.println("一般分数大于80证明是同一个人,否则不是同一个人,当前比对分数为:"+score);if(score>80){System.out.println("比对结果:是同一个人");}else{System.out.println("比对结果:不是同一个人");}}else{System.out.println("第二张是假的");}}else{System.out.println("第一张是假的");}}

到此为止就可以了,本代码的原理我先说下:
先上传两张一次拍照的照片,然后实现比对功能,上传照片完成之后会进行对每张照片活体检测,检测完成第一张照片之后继续检测第二张,如果照片不是活体(这里指的是照片进行二次翻拍),那么久不进行下面的比对,否则进行比对,当然比对的时候在判断是否比对成功。

人脸识别活体检测测试案例相关推荐

  1. 人脸识别活体检测之张张嘴和眨眨眼

    暑 [这段时间有点忙,终于截止今天2018.06.22完成了人脸识别的最后一道程序--活体检测之眨眨眼和张张嘴] 关于人脸识别的内容我之前也写过好几篇博文,其中有:  {java实现人脸识别源码}  ...

  2. dlib实现人脸识别+活体检测

    目录: 一:dlib的shape_predictor_68_face_landmarks模型 二.眨眼检测 三.张口检测 四.眨眼检测+张口检测 五.人脸识别 六.人脸识别+活体检测 七.人脸识别破解 ...

  3. 人脸识别--活体检测(眨眼检测)

    人脸识别在现在很多的项目中都有应用,最常见的就属此次315曝光的支付宝刷脸登录,当然支付宝也出来做了澄清,我们还是需要相信科技的.支付宝的刷脸可谓是相当成熟了.下面我们来简单的分析一下支付宝的刷脸登录 ...

  4. Android开发之虹软人脸识别活体检测基本步骤

    首先,我简单说下虹软的人脸识别基本步骤: 1.你的设置好设置视频模式方向用于人脸检测 有如下几个可设置方向 //设置视频模式全方向人脸检测ConfigUtil.setFtOrient(this, Fa ...

  5. 微信公众号人脸识别|活体检测SDK|人证比对API

    一.概述 人脸识别特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术.人脸识别是一项热门的计算机技术研究领域,可以将人脸明暗侦测,自动调整动态曝光补偿,人脸追踪侦测,自动调整影像放大:它属于生物 ...

  6. 人脸识别活体检测之张张嘴和眨眨眼——readme

    人脸检测返回参数详情 ----------------------------------------------------------------------------------------- ...

  7. 人脸识别活体检测之张张嘴和眨眨眼——Json_Parsing

    /** * @Title: Json_Parsing.java * @Package org.util * @Description: TODO该方法的主要作用: * @author A18ccms ...

  8. Android开发之虹软人脸识别活体检测SDK包Bitmap转NV21方法

    /** * Bitmap 转化为 ARGB 数据,再转化为 NV21 数据 * * @param src 传入的 Bitmap,格式为 Bitmap.Config.ARGB_8888 * @param ...

  9. android bitmap nv21,Android开发之虹软人脸识别活体检测SDK包Bitmap转NV21方法

    /** * Bitmap 转化为 ARGB 数据,再转化为 NV21 数据 * * @param src 传入的 Bitmap,格式为 Bitmap.Config.ARGB_8888 * @param ...

  10. 人脸识别活体检测之张张嘴和眨眨眼——Landmark

    /** * @Title: Landmark.java * @Package org.entity * @Description: TODO该方法的主要作用: * @author A18ccms A1 ...

最新文章

  1. 阿里手机小号,测试用
  2. 静态内部类和非静态内部类区别汇总
  3. 关于cocos2d-x 和安卓之间的相互调用
  4. 炉石怎么看服务器是否维护,炉石传说服务器维护故障补偿方案详细内容
  5. Highways POJ-1751 最小生成树 Prim算法
  6. adb 黑域app_黑域使用教程 进入黑域app详细教程
  7. cocos2dx lua转luac的问题(32位与64位不兼容问题)
  8. veil-evasion介绍
  9. 高德h5地图api接口_概述-URI API | 高德地图API
  10. 神马都是浮云!神马浮云是什么意思?-出自小月月
  11. Asp代码转换java代码器_asp下实现对HTML代码进行转换的函数
  12. 关于Microsoft Store无法更新的解决方案
  13. form表单的submit()和onsubmit()的区别
  14. 仪器数据自动化采集,助力提升实验室管理效率
  15. js、jquery操作复选框checkbox总结(单个/多个获取选中值、初始化设置默认选中值、全选反选)
  16. html5 粒子动画效果制作,8款惊艳的HTML5粒子动画特效
  17. 10万+爆文怎么写?这些软文写作技巧你掌握了吗?
  18. 大学生个人网页模板 简单网页制作作业成品 (响应式明星防弹少年团7页)
  19. 整理任正非思想:从二则空难事故看员工培训的重要性-1994
  20. (02)Cartographer源码无死角解析-(50) 2D点云扫描匹配→相关性暴力匹配2:RealTimeCorrelativeScanMatcher2D

热门文章

  1. 园区网络的IP地址资源规划 使用VLSM(变长子网掩码)主机数量、子网段数量、主机总数如何计算
  2. Mysql中key 、primary key
  3. IDEA字体设置详解
  4. LogViewer_2
  5. java重载静态方法_在Java中可以重载或覆盖静态方法吗
  6. 利用Python批量修改多个ass字幕文件
  7. shell脚本之循环语句
  8. CS61A第一章笔记
  9. 图像风格迁移 CycleGAN原理
  10. creo扫描选择多条链作为轨迹_Creo与Proe可变截面扫描关系式雨伞建模实例-一加一学院...