安装注册好之后就可以开始使用了。我这里使用的是C/S版的,开发环境为Microsoft .NET Framework 4.5 ,开发工具为vs2015 社区版。
首先,添加dll的引用。
[UnmanagedFunctionPointer (CallingConvention.Cdecl)] delegate void FaceCallback ( IntPtr bytes, int size, String res ); // sdk初始化 [DllImport ("BaiduFaceApi.dll", EntryPoint = "sdk_init", CharSet = CharSet.Ansi , CallingConvention = CallingConvention.Cdecl)] private static extern int sdk_init ( bool id_card ); // 是否授权 [DllImport ("BaiduFaceApi.dll", EntryPoint = "is_auth", CharSet = CharSet.Ansi , CallingConvention = CallingConvention.Cdecl)] private static extern bool is_auth (); // 获取设备指纹 [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_destroy", CharSet = CharSet.Ansi , CallingConvention = CallingConvention.Cdecl)] private static extern void sdk_destroy (); //默认电脑自带摄像头,device可能为0,若外接usb摄像头,则device可能为1. [DllImport ("BaiduFaceApi.dll", EntryPoint = "usb_track_face_info", CharSet = CharSet.Ansi , CallingConvention = CallingConvention.Cdecl)] private static extern IntPtr usb_track_face_info ( FaceCallback callback, int dev ); // 清除跟踪的人脸信息 [DllImport ("BaiduFaceApi.dll", EntryPoint = "clear_tracked_faces", CharSet = CharSet.Ansi , CallingConvention = CallingConvention.Cdecl)] private static extern void clear_tracked_faces (); // 测试获取设备指纹device_id public static void test_get_device_id () { IntPtr ptr = get_device_id (); string buf = Marshal.PtrToStringAnsi (ptr); Console.WriteLine ("device id is:" + buf); }
private void FaceScan_Load ( object sender, EventArgs e ) { //设备初始化 sdk_init (false); //是否激活 bool authed = is_auth (); if (authed)//激活成功 { //获取设备指纹 test_get_device_id (); } else { MessageBox.Show ("该设备未激活"); } System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; //另起线程扫描人脸 th = new Thread (test_face_track); th.IsBackground = true; th.Start (); }
主要是初始化和激活这两个方法比较折腾,其他的调用方法就按照文档进行就OK 了,百度云开发文档上面方法还是很详尽的。
sdk_init (false) 返回为-1表示失败,0表示成功 。
第一次使用会遇到很多问题,比如在init这一步就迟迟无法过去。
即使将该dll放在debug下面,也是显示其他的问题,这里有个比较粗暴的解决方法,将百度的demo中的dll全部拷贝到debug下,就可以了,这里肯定会有一些没用的dll,但是我也没细看。
然后再调用人脸识别方法的时候提示没有resource ,这里是因为百度人脸识别的特征库是在本地的,可能是由于离线的原因(个人猜想),将特征库放在了本地,所以demo中的face-resource需要拷贝到项目的bin目录下,db文件夹需要放在debug下。
当然,是数据库就可以访问,这里可以通过sqlitestudio来访问这个数据库,下一个sqlitestudio,然后在将db文件夹中的文件选择就行了。
如果有其他的问题报错,在debug文件夹下有两个log文件,进去找错误信息就行了
原文:https://www.cnblogs.com/helloliu/p/11943777.html