您的位置:首页 > 移动开发 > Unity3D

[置顶] unity百度人脸识别之登录篇

2018-03-21 13:21 295 查看
using Baidu.Aip.Face;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;

public class FaceLogin : MonoBehaviour {
private Face client;//调用百度API接口
private byte[] image;//注册时用到的图片数据
private Dictionary<string, object> options = new Dictionary<string, object>();//多参数
private JObject result;
private string uid;//用户id,这是存到人脸库中的
private string groupid;//用户所在组,部门
private double scores = 0.01f;//认证返回的分数(百度0-100,指数是80分可以通过认证,可以自己设置)
public Text uidInput;
public Text DebugText;//提示是否通过认证
public Text DebugText1;
public Text DebugText2;
public bool isSuccess = false;
private int error_code = 0;//百度API返回的错误代码编号
private string error_msg;//错误描述信息,帮助理解和解决发生的错误。

void Awake()
{
client = new Face(AccessToken.client_id, AccessToken.client_secret);//通过APIKey和Secret Key取得接口
AccessToken.ClientCallback();
}
public void Login()
{
Invoke("FaceVerify", 5.0f);
}
private void Update()
{
if (string.IsNullOrEmpty(uidInput.text))
{
isSuccess = true;
}
if (!string.IsNullOrEmpty(uidInput.text))
{
isSuccess = false;
DebugText1.text = "";
}
}
//人脸认证登录,人脸认证需要指定具体的用户id即可
void FaceVerify()
{
if (isSuccess == false)
{
uid = uidInput.text;
groupid = "test1,group1,group2,group3,U3D1,U3D";//这是我所有的用户组
string path = Application.dataPath + "/ScreenShot/" + WebCamera.ScreenShotTexture2D + ".jpg";
image = File.ReadAllBytes(path);
options = new Dictionary<string, object>()
{
{"top_num",1 },//最大认证数
{"ext_fields","faceliveness" }//活体检测
};
result = client.Verify(uid, groupid, image, options);
Debug.Log(result);

}
try//避免出现网络异常导致错误
{
error_code = int.Parse(result["error_code"].ToString());//先把json数据转成字符串,再转成int类型
error_msg = result["error_msg"].ToString();//把返回的json错误信息转成字符串

switch (error_code)
{
case 216611:
DebugText.text = "user not exist	用户id不存在,请确认该用户是否注册或注册已经生效(需要已经注册超过5s)";
break;
case 216401:
DebugText.text = "internal error	内部错误";
break;
case 216402:
DebugText.text = "face not found 未找到人脸,请检查图片是否含有人脸";
break;
case 216500:
DebugText.text = "unknown error	未知错误";
break;
case 216615:
DebugText.text = "fail to process images	服务处理该图片失败,发生后重试即可";
break;
case 216618:
DebugText.text = "no user in group	组内用户为空,确认该group是否存在或已经生效(需要已经注册超过5s)";
break;
default:
DebugText.text = error_msg;
break;
}

if (error_code != 216611 || error_code != 216401 || error_code != 216402
|| error_code != 216500 || error_code != 216615 || error_code != 216618)
{
scores = double.Parse(result["result"][0].ToString());
}
} catch (Exception e) { if (isSuccess == true) { DebugText1.text = "用户id不能为空,请重新填写!"; } if (isSuccess == false && scores > 80.0f) { if (error_code != 216611 || error_code != 216401 || error_code != 216402 || error_code != 216500 || error_code != 216615 || error_code != 216618) { DebugText.text = "通过认证!"; } //下个场景 } else if(isSuccess == false && scores < 80.0f) { DebugText.text = "认证失败!"; DebugText2.text = "分值为:" + scores + " 低于认证值 非法入侵!"; } } }}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐