1. 人脸检测(传入图片文件路径),返回json
进入主函数,调用test_face_track()方法
// 人脸c#入口方法
static void Main(string[] args)
{
Console.WriteLine("in main");
bool id = false;
int n = sdk_init(id);
if(n != 0)
{
Console.WriteLine("auth result is {0:D}", n);
Console.ReadLine();
}
// 测试是否授权
bool authed = is_auth();
Console.WriteLine("authed res is:"+authed);
test_get_device_id();
long t_begin = TimeUtil.get_time_stamp();
// 测试获取人脸属性
// FaceAttr attr = new FaceAttr();
// attr.test_get_face_attr();
// attr.test_get_face_attr_by_buf();
//attr.test_get_face_attr_by_mat();
//attr.test_get_face_attr_by_face();
test_face_setting();
// 测试获取人脸质量
// FaceQuality quality = new FaceQuality();
// quality.test_get_face_quality();
// quality.test_get_face_quality_by_buf();
// quality.test_get_face_quality_by_mat();
//quality.test_get_face_quality_by_face();
// 测试人脸设置相关
// test_face_setting();
// 测试人脸管理
// test_face_manager();
// 测试人脸检测
test_face_track();
// 测试人脸比较&识别
// test_face_compare();
// 测试人脸活体检测
//test_face_liveness();
long t_end = TimeUtil.get_time_stamp();
Console.WriteLine("time cost is:"+(t_end-t_begin));
sdk_destroy();
Console.WriteLine("end main");
Console.ReadLine();
}
// 测试人脸检测
public static void test_face_track()
{
FaceTrack ft = new FaceTrack();
// 人脸检测(传入图片文件路径),返回json
ft.test_track();
// 最大人脸检测(传入图片文件路径),返回json
//ft.test_track_max_face();
// 人脸检测(传入图片二进制文件buffer),返回json
// ft.test_track_by_buf();
// 最大人脸检测(传入图片二进制文件buffer),返回json
// ft.test_track_max_face_by_buf();
//usb 摄像头实时人脸检测
//ybz ft.test_usb_track_face_info();
// 清除跟踪的人脸信息
//ft.test_clear_tracked_faces();
}
// 测试人脸检测
public void test_track()
{
// 传入图片文件绝对路径
string file_name = "d:\\kehu2.jpg";
int max_track_num = 1; // 设置最多检测人数(多人脸检测),默认为1,最多可设为10
IntPtr ptr = track(file_name, max_track_num);
string buf = Marshal.PtrToStringAnsi(ptr);
Console.WriteLine("track res is:" + buf);
}
d盘根目录需要放入一个kehu2.jpg照片
运行结果
返回参数说明:
count: 检测的人脸数量
width: 人脸宽度, angle: 角度
center_x, center_y: 人脸中心位置坐标
face_id: 人脸id
score:人脸得分
headpos: 人脸三个角度( x, y, z方向) landmark: 人脸轮廓关键点坐标
2. 人脸注册
调用test_user_add_by_buf()方法,d盘需要放一张4.jpg照片
参数 | 必须 | 类型 | 示例描述 |
---|---|---|---|
user_id | 是 | string | 用户id,字母、数字、下划线组成,最多128个字符 |
group_id | 是 | string | 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制128B。用户组和user_id之间,仅为映射关系。如传入的groupid并未事先创建完毕,则注册用户的同时,直接完成group的创建 |
image | 是 | string | 图片信息,须小于10M,传入图片的本地文件地址 |
user_info | 否 | string | 用户资料,256个字符以内 |
// 测试人脸注册(传入二进制图片buffer)
public void test_user_add_by_buf()
{
// 人脸注册
string user_id = "test_user";
string group_id = "test_group";
System.Drawing.Image img = System.Drawing.Image.FromFile("d:\\4.jpg");
byte[] img_bytes = ImageUtil.img2byte(img);
string user_info = "user_info";
IntPtr ptr = user_add_by_buf(user_id, group_id, img_bytes, img_bytes.Length, user_info);
string buf = Marshal.PtrToStringAnsi(ptr);
Console.WriteLine("user_add_by_buf res is:" + buf);
}
运行结果:
返回信息
errno信息:
errno=0 : Success
errno>0 : 错误码对应的详细msg
人脸信息录入成功之后,数据存放在x64目录下的face.db下
我们可以打开face.db验证是否保存成功
表:USER保存用户的个人信息
表:FEATURE保存用户的人脸特征值信息
到此已经完成人脸检测和人脸录入功能。