人脸识别活体检测测试案例

最近好多人找我要关于人脸识别活体检测的案例,今天正好有空我就更新一下,先解释一下活体,顾名思义就是看看是否是活人在测检(大白话解说),用技术上的话也就是看看当前操作者是否是在用照片或者其他方法来操作,比如我们的人脸识别,人脸登陆(想要了解的可以点击这里),存在一个最大的问题就是,当张三来登陆的时候如果张三本人登陆成功没有问题,要是张三拿着李四的照片来进行登陆,这也能登陆成功的话就是个最大的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);
	    //解析json
	    JSONObject 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("第一张是假的");
		}
	}

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

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
Uniapp是一款基于Vue.js框架开发的跨平台应用开发框架,它可以将我们的Vue代码编译成不同平台的原生应用。而腾讯云人脸识别活体检测是一项用于识别人脸并验证其真实性的技术,可以用于安全认证、人脸支付等场景。 在Uniapp中对接腾讯云人脸识别活体检测,我们可以按以下步骤进行: 1. 注册并创建腾讯云账号,开通人脸识别服务,并获取到相关的API密钥和访问密钥。 2. 在Uniapp项目中引入相关的插件或库,比如uni-app-faceid插件,该插件是为了方便Uniapp与腾讯云人脸识别服务进行交互而开发的。 3. 在Uniapp的页面中,使用插件提供的组件或方法,调用腾讯云人脸识别服务的接口,传递待识别的人脸图像数据。 4. 接收腾讯云人脸识别服务返回的结果,根据返回的结果判断活体检测是否通过。 需要注意的是,在使用腾讯云人脸识别活体检测时,我们需要保证传入的人脸图像质量较高,且能够满足腾讯云人脸识别服务的要求,例如需要清晰可见的人脸图像。 除了以上步骤,根据具体需求,我们还可以根据腾讯云人脸识别服务的其他功能,如人脸比对人脸搜索等,进行更高级的功能扩展。 总之,Uniapp与腾讯云人脸识别活体检测的对接,需要通过引入插件或库来实现与腾讯云交互,并根据返回结果判断活体检测是否通过。这样我们就可以在Uniapp项目中应用腾讯云的人脸识别服务,实现更广泛的应用场景。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆雄雄

哎,貌似还没开张来着呢~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值