当前位置:   article > 正文

Unity —— 百度人脸识别SDK使用_unity 百度人脸融合

unity 百度人脸融合

又到了交完项目暂时么有事情的时候啦~ 然后自己无聊,突然想研究研究人脸识别 =- = 于是就开始了

零. 先在网上查Unity 人脸识别 ,你会发现网上的大部分都是 OpenCV 和 BaiduAI 的SDK ~ 于是我就选择了先看 Baidu的把~

(忘了一件事情: 百度的人脸识别SDK 更新了V3 版本,但是V2 也是能正常服务的,所以要注意)

一: 下载SDK

因为Unity 是C#语言的所以你懂的~

下载以后解压你会发现有好几个~ 因为我用的版本是5.6.1 ,查了查网上的资料,我选择了第一个 net35 (为啥查资料呢?因为unity 支持的 .NET 版本不高啊,太高的用不了,毕竟SDK 是针对C#  不是针对Unity啊)

然后打开文件夹 你会发现 有几个 .dll 的文件

然后把他们 放在 文件夹下就行了

二. 注册个百度账号,去创建你的库

创建好以后你会看到

AppID ,API Key 和 Secret Key 很重要哦~ 

三 . 接下来就是代码了 话不多说直接粘代码

  1. // **********************************************************************
  2. // Copyright (C) 2017 The company name
  3. //
  4. // 文件名(File Name):
  5. // 作者(Author): Future.YS
  6. // 创建时间(CreateTime): 2018/7/18 15:34:45
  7. // 修改者列表(modifier):
  8. // 模块描述(Module description): 百度人脸识别
  9. // **********************************************************************
  10. using System.Collections;
  11. using System.Collections.Generic;
  12. using UnityEngine;
  13. using Baidu.Aip.Face;
  14. using System.IO;
  15. using System;
  16. public class HelloFace : MonoBehaviour {
  17. // 设置
  18. private string app_ID = "";
  19. private string app_KEY = "";
  20. private string secret_KEY = "";
  21. private Face client;
  22. // 连接
  23. void Awake()
  24. {
  25. System.Net.ServicePointManager.ServerCertificateValidationCallback +=
  26. delegate (object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
  27. System.Security.Cryptography.X509Certificates.X509Chain chain,
  28. System.Net.Security.SslPolicyErrors sslPolicyErrors)
  29. {
  30. return true; // **** Always accept
  31. };
  32. }
  33. void Start(){
  34. client = new Baidu.Aip.Face.Face (app_KEY,secret_KEY);
  35. StartCoroutine(IEGetStringBase64());
  36. }
  37. // /// <summary>
  38. // /// 人脸注册(官网给的)
  39. // /// </summary>
  40. // public void UserAddDemo() {
  41. // string image = "取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串";
  42. //
  43. // string imageType = "BASE64";
  44. //
  45. // string groupId = "Friend";
  46. //
  47. // string userId = "user1";
  48. //
  49. // // 调用人脸注册,可能会抛出网络等异常,请使用try/catch捕获
  50. // var result = client.UserAdd(image, imageType, groupId, userId);
  51. // print(result);
  52. // // 如果有可选参数
  53. // var options = new Dictionary<string, object>{
  54. // {"user_info", "liuyizhong"},
  55. // {"quality_control", "NORMAL"},
  56. // {"liveness_control", "LOW"}
  57. // };
  58. // // 带参数调用人脸注册
  59. // result = client.UserAdd(image, imageType, groupId, userId, options);
  60. // print(result);
  61. // }
  62. public void SignUpFace(string image, string imageType, string groupId, string userId)
  63. {
  64. var options = new Dictionary<string, object>{
  65. {"user_info", "liuyizhong"},
  66. {"quality_control", "NORMAL"},
  67. {"liveness_control", "LOW"}
  68. };
  69. // 带参数调用人脸注册
  70. var result = client.UserAdd(image, imageType, groupId, userId, options);
  71. }
  72. IEnumerator IEGetStringBase64()
  73. {
  74. //获取到每一张图片的路径
  75. string[] picsPathArr = Directory.GetFiles(Application.streamingAssetsPath + "/FaceDetect/");
  76. //循环获取每张图片的base64字符串
  77. for (int i = 0; i < picsPathArr.Length; i++)
  78. {
  79. //unity会自动生成.meta文件,过滤掉
  80. if (picsPathArr[i].Contains("meta")) continue;
  81. //读取
  82. FileInfo file = new FileInfo(picsPathArr[i]);
  83. var stream = file.OpenRead();
  84. byte[] buffer = new byte[file.Length];
  85. //读取图片字节流
  86. stream.Read(buffer, 0, Convert.ToInt32(file.Length));
  87. //base64字符串
  88. string imageBase64 = Convert.ToBase64String(buffer);
  89. //采用base64字符串方式上传
  90. string imageType = "BASE64";
  91. //用户组
  92. string groupId = "Friend";
  93. //用户id,一般同一个人的图片放在同一个id下
  94. string userId = "liuyizhong";
  95. //开始注册
  96. SignUpFace(imageBase64, imageType, groupId, userId);
  97. yield return new WaitForSeconds(0.6f);
  98. }
  99. }
  100. //人脸对比
  101. public void FaceSearch()
  102. {
  103. FileInfo file = new FileInfo(Application.streamingAssetsPath + "/FaceDetect/1_1.jpg");
  104. var stream = file.OpenRead();
  105. byte[] buffer = new byte[file.Length];
  106. //读取图片字节流
  107. stream.Read(buffer, 0, Convert.ToInt32(file.Length));
  108. var image = Convert.ToBase64String(buffer);
  109. var imageType = "BASE64";
  110. //之前注册的组
  111. var groupIdList = "Friend";
  112. var result = client.Search(image, imageType, groupIdList);
  113. Debug.Log(result);
  114. }
  115. }

 

好了- - 之后 开始工程 你就会发现他上传到了你自己账号里~

score 就是人脸对比度  0 - 100 ~

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/123552?site
推荐阅读
相关标签
  

闽ICP备14008679号