using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Runtime.InteropServices;
|
|
// sdk使用注意事项,使用sdk前,请参考文档进行授权激活,否则
|
// sdk初始化可能失败,可通过打开日志face_conf.json,字段改为true。
|
// 查找是否通过了授权激活或激活失败的原因
|
|
// 人脸c#入口类
|
namespace FaceAI
|
{
|
public class Face
|
{
|
// sdk初始化
|
[DllImport("BaiduFaceApi.dll", EntryPoint = "sdk_init", CharSet =CharSet.Ansi
|
, CallingConvention =CallingConvention.Cdecl)]
|
public static extern int sdk_init(string model_path);
|
// 是否授权
|
[DllImport("BaiduFaceApi.dll", EntryPoint = "is_auth", CharSet = CharSet.Ansi
|
, CallingConvention = CallingConvention.Cdecl)]
|
private static extern bool is_auth();
|
// sdk销毁
|
[DllImport("BaiduFaceApi.dll", EntryPoint = "sdk_destroy" , CharSet = CharSet.Ansi
|
, CallingConvention = CallingConvention.Cdecl)]
|
private static extern void sdk_destroy();
|
|
// 获取设备指纹
|
[DllImport("BaiduFaceApi.dll", EntryPoint = "get_device_id", CharSet = CharSet.Ansi
|
, CallingConvention = CallingConvention.Cdecl)]
|
private static extern IntPtr get_device_id();
|
|
// 获取sdk版本号
|
[DllImport("BaiduFaceApi.dll", EntryPoint = "sdk_version", CharSet = CharSet.Ansi
|
, CallingConvention = CallingConvention.Cdecl)]
|
private static extern IntPtr sdk_version();
|
|
// 获取sdk信息如设备指纹,版本号
|
static void get_sdk_info()
|
{
|
// 获取设备指纹
|
IntPtr ptr = get_device_id();
|
string buf = Marshal.PtrToStringAnsi(ptr);
|
Console.WriteLine("device id is:" + buf);
|
// 获取sdk版本号
|
IntPtr ptr_v = sdk_version();
|
string vbuf = Marshal.PtrToStringAnsi(ptr_v);
|
Console.WriteLine("sdk version is:" + vbuf);
|
}
|
|
// 人脸c#入口方法
|
public static void Main()
|
{
|
//Console.WriteLine("in main");
|
// model_path为模型文件夹路径,即models文件夹(里面存的是人脸识别的模型文件)
|
// 传空为采用默认路径,若想定置化路径,请填写全局路径如:d:\\face (models模型文件夹目录放置后为d:\\face\\models)
|
// 若模型文件夹采用定置化路径,则激活文件(license.ini, license.key)也可采用定制化路径放置到该目录如d:\\face\\license
|
// 亦可在激活文件默认生成的路径
|
string model_path = null;
|
// string model_path="d:\\face";
|
long time_begin = TimeUtil.get_time_stamp();
|
int n = sdk_init(model_path);
|
long time_end = TimeUtil.get_time_stamp();
|
Console.WriteLine("sdk init cost {0:D}", time_end- time_begin);
|
//若没通过初始化,则n不为0, 返回的错误码及原因可参考说明文档
|
if (n != 0)
|
{
|
Console.WriteLine("sdk init fail and errcode is {0:D}", n);
|
|
Console.ReadLine();
|
return;
|
}
|
|
Console.WriteLine("Main: 成功");
|
// 获取设备指纹
|
get_sdk_info();
|
// 验证是否授权
|
bool authed = is_auth();
|
Console.WriteLine("authed res is:"+authed);
|
long t_begin = TimeUtil.get_time_stamp();
|
// 以下为demo示例,请参考FaceDemo打开相关注释测试验证
|
//FaceDemo demo = new FaceDemo();
|
//demo.face_demo();
|
long t_end = TimeUtil.get_time_stamp();
|
Console.WriteLine("time cost is:"+(t_end-t_begin));
|
// 使用完毕,销毁sdk,释放内存
|
sdk_destroy();
|
Console.WriteLine("end main");
|
Console.ReadLine();
|
}
|
}
|
}
|