【人脸识别】百度人脸识别离线SDK导入Unity3D


  前几天项目须要,要增长一我的脸识别登陆的功能,并且有可能会在没网的环境下登陆,因此就研究了一下百度的离线人脸识别SDK。SDK种类蛮多的,由于Unity只支持C#语言,因此人脸识别的SDK也是下载的C#版的,这里是离线识别SDK介绍文档

1、下载激活SDK

  首先登陆百度智能云后,从产品中找到人脸识别——离线识别SDK管理——我的实名认证
实名认证  认证成功后,就能够下载离线版SDK了
在这里插入图片描述  直接下载下来的SDK是一个VS工程,是不能直接使用的,还要进行进行激活,百度会送两个测试版的受权,选择联网激活就能够,由于联网激活比较简单联网激活  选择联网激活后会弹出一个包含序列号的框
在这里插入图片描述  在VS工程目录下找到bin-x64-LicenseTool.exe,这就是激活工具
在这里插入图片描述
  打开后,把16位序列号输入进去,先点击网页端的下一步,再点击激活工具的激活,就能够激活成功了
在这里插入图片描述
  能够看到在激活工具的上方出现了两个激活文件,有了这两个激活文件就能够了
在这里插入图片描述
  若是找不到或者不慎删掉的话,在离线识别SDK管理也能从新下载,很是方便
在这里插入图片描述html

2、将SDK导入Unity

  找到下载的SDK目录下的bin文件夹,将文件夹内的face-resource和x64文件夹拷贝到Unity工程的Plugins内
在这里插入图片描述  刚拷贝进来可能会报一个错,是由于OpenCvSharp支持的.NET 4.x在这里插入图片描述  在PlayerSettings中调整Scripting Runtime Version为.NET 4.6就能够了
在这里插入图片描述以后若是想要尝试注册的话能够在Face脚本上修改GroupId和UserId,若是为空的话是没法注册成功的:
在这里插入图片描述总之是成功了~
在这里插入图片描述git

3、遇到的一些坑

1.有时候会报错:找不到"BaiduFaceApi.dll"

// sdk初始化
[DllImport("BaiduFaceApi.dll", EntryPoint = "sdk_init", CharSet = CharSet.Ansi
        , CallingConvention = CallingConvention.Cdecl)]
private static extern int sdk_init(bool id_card);

缘由:
  导入dll根本不须要后缀“.dll”,即写上dll文件名就OK了
解决方法:
  将BaiduFaceApi.dll改成BaiduFaceApi
参考:
  Unity-5-0-中使用cc开发的dll插件使用中的问题github

2.第一次打开Unity工程初始化(sdk_init)结果为0,以后每次初始化 结果都是-1

在这里插入图片描述缘由:
  SDK第一次初始化后就留在Unity的内存中了,即便程序中止运行也还存在,连续初始化就会返回初始化结果为-1
解决方法:
  须要在程序中止运行的时候销毁SDKweb

private void OnDestroy()
{
    sdk_destroy();
}

3.人脸注册以后,再登陆,报人脸不存在

// 提早加载库里全部数据到内存中
[DllImport("BaiduFaceApi", EntryPoint = "load_db_face", CharSet = CharSet.Ansi
    , CallingConvention = CallingConvention.Cdecl)]
public static extern bool load_db_face();

缘由:
  只在最开始的时候加载人脸数据库到内存中了,当注册人脸成功,只是将人脸数据存储到人脸数据库中,并不在内存中
解决方法:
  在注册成功的时候再加载一次人脸库到内存中数据库

load_db_face();

4.VS2017中的原始SDK工程没法执行

缘由:
  首先检查两个license文件在不在;其次要把管理器设置为Release模式在这里插入图片描述svg

5.导出后没法像Unity中同样正常运行

首先强调一下,个人Unity版本是2017.2.1f1,2018之后的版本打包出来的文件路径和2017的路径有一些差距,我尚未太研究。工具

5.1 必须自行添加受权文件

  建议导出文件的路径以下:(增长一个bin文件夹)
在这里插入图片描述  将两个受权文件拷贝到和exe文件同一目录下:
在这里插入图片描述测试

5.2 必须自行添加face-resource文件夹

  最后将Unity/Plugins目录下的face-resource文件拷贝到和bin文件夹同一目录下:
在这里插入图片描述  这样就大功告成了!插件

6.人脸数据库没法打开

  正常来讲,人脸库文件夹db会自动生成在exe文件的同级目录下,内含数据库文件face.db,但有时候你会发现“face_sdk.log”文件中会报这样的错:
在这里插入图片描述缘由:
  目录不能含有中文路径
解决办法:
  去除中文路径3d


目前来讲我只发现了这些问题,若是之后发现了其余问题,会继续更新~

github项目源码在此:百度人脸识别离线SDK测试工程