百度人脸识别之人脸识别FaceIdentify(签到考勤)
作者:杨小哥 发布时间:2022-08-24 18:25:03
标签:百度人脸识别,人脸识别,FaceIdentify
本文实例为大家分享了百度人脸识别之人脸识别FaceIdentify,供大家参考,具体内容如下
using System.Collections.Generic;
using UnityEngine;
using Baidu.Aip.Face;
using Newtonsoft.Json.Linq;
using UnityEngine.UI;
using System.IO;
//识别,(用于签到考勤)
public class FaceIdentify : MonoBehaviour {
private Face client;//百度API接口
private JObject result;//识别数据的返回结果
private byte[] image;//图片字节数
private Dictionary<string, object> options = new Dictionary<string, object>();//多参数
private double scores;//返回的分数,用来判定识别是否达标
private string group_id;//用户所在的用户组,或者说部门
private int error_code;//返回得错误代码
private string error_msg;//返回得错误提示信息
public Text DebugText;
public Text DebugText1;
public Text DebugText2;
private string result_group_id;//result返回的用户组数据
private string result_uid;//result返回的用户id数据
private string result_user_info;//result 返回的用户信息数据
public bool isSuccess = false;
private void Awake()
{
client = new Face(AccessToken.client_id, AccessToken.client_secret);
AccessToken.ClientCallback();//获取证书
}
private void Start()
{
DebugText.text = "";
DebugText1.text = "";
DebugText2.text = "";
}
public void faceIdentify()
{
Invoke("Identify", 5.0f);
}
void Identify()
{
group_id = "U3D1";
string path = Application.dataPath + "/ScreenShot/" + WebCamera.ScreenShotTexture2D + ".jpg";
image = File.ReadAllBytes(path);
options = new Dictionary<string, object>()
{
{"ext_fileds","faceliveness" },
{"user_top_num",1 }//最大返回5个识别数
};
try//避免出现网络异常导致错误
{
result = client.Identify(group_id, image, options);
Debug.Log(result);
error_code = int.Parse(result["error_code"].ToString());//先把json数据转成字符串,再转成int类型
error_msg = result["error_msg"].ToString();//把返回的json错误信息转成字符串
switch (error_code)
{
case 216100:
DebugText.text = "invalid param 参数异常,请重新填写注册信息";
break;
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 != 216100 || error_code != 216101|| error_code != 216401
|| error_code != 216402 || error_code != 216500 || error_code != 216615 || error_code != 216618)
{
DebugText1.text = result.ToString();//显示返回的数据信息
}
}
catch
{
if (error_code != 216100 || error_code != 216101 || error_code != 216401
|| error_code != 216402 || error_code != 216500 || error_code != 216615 || error_code != 216618)
{
JToken res = result["result"];
scores = double.Parse(res[0]["scores"][0].ToString());
if (scores > 80.0f)
{
result_uid = res[0]["uid"].ToString();
result_group_id = res[0]["group_id"].ToString();
result_user_info = res[0]["user_info"].ToString();
DebugText1.text = "识别成功,今日已签到!";
DebugText2.text = result_uid+"\n"+ result_group_id+"\n" + result_user_info;
Debug.Log(result_uid.ToString() + result_group_id.ToString() + result_user_info.ToString());
}
else
{
DebugText1.text = "失败,请重新识别!";
}
}
}
}
}
来源:https://blog.csdn.net/qq_38962400/article/details/79642562
0
投稿
猜你喜欢
- 目录(1)class常量池(2)运行时常量池(3)基本类型包装类常量池(4)字符串常量池总结java中有几种不同的常量池,以下的内容是对ja
- 本文实例为大家分享了OpenCV计算图像的水平和垂直积分投影的具体代码,供大家参考,具体内容如下#include <cv.h>
- 调整数组顺序使奇数位于偶数之前1. 题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的
- C语言奇偶排序算法奇偶排序,或奇偶换位排序,或砖排序,是一种相对简单的排序算法,最初发明用于有本地互连的并行计算。这是与冒泡排序特点类似的一
- 对象是使用new创建的,但是并没有与之相对应的delete操作来回收对象占用的内存。当我们完成对某个对象的使用时,只需停止对该对象的引用:将
- 1.Action中的validate()方法Struts2提供了一个Validateable接口,这个接口中只存在validat
- LockSupport 简介LockSupport 是 Java 并发编程中一个非常重要的组件,我们熟知的并发组件 Lock、线程池、Cou
- 在sql server2005以及之后的sql server中引入了Xml数据类型,在C#中使用Xml数据类型需要指定参数类型为SqlDbT
- 这几年一直在做手机上和电视盒的App,几乎没有考虑过横竖屏切换的问题。电视盒好说,横屏不变,你要是给它设计个竖屏人家也没机会使;而手机上的应
- java Iterator接口和LIstIterator接口分析目录1.Iterator接口2.ListIterator3.It
- 本文实例讲述了C#获取CPU编号的方法。分享给大家供大家参考。具体如下:/// <summary>/// Gets the cp
- 本文实例讲述了Android开发之获取LayoutInflater对象的方法。分享给大家供大家参考,具体如下:在写Android程序时,有时
- 目录简单介绍具体实现首先,咱们先配置一下相关的jar包(pom.xml)创建一个Pet接口,存放方法say()创建一个Person类创建一个
- 因为gradle大幅升级至5 , as gradle plugin升级至3.6, 导致一些旧的项目基本重新编译时会出现各
- 一、面向对象的描述面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的
- 引言♀ 小AD:明哥,我终于出了这口恶气了。♂ 明世隐:打爽了是吧。♀ 小AD:那必须的,打十盘我赢九盘,我随意。♂ 明世隐:那小朋友不是搞
- 为什么会有常量池的概念?不知道小伙伴们是否有思考过这个问题? 没有思考也无所谓,小编在这里类比一下,大家就会清晰了。什么是池? 我们听的最多
- 前言本文主要介绍了关于java结合keytool实现非对称签名和验证的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍
- 多线程细节问题sleep方法和wait方法的异同点?相同点:让线程处于冻结状态.不同点:sleep必须指定时间 wait可以指定时间也可以不
- 具体代码如下所示:package zhangphil.test; import android.graphics.Bitmap; impor