使用百度人脸识别接口在加入活体检测参数后还是没有活体检测阈值返回 5C
不用活体检测参数时接口调用正常,加入之后在获取活体检测分数时抛出异常显示该值为null,中断时查看了返回的json数组,没有faceliveness项返回。
    代码段如下:
    var client = new Baidu.Aip.Face.Face(Api_Key, Secret_Key);
        var image1 = File.ReadAllBytes(filename);
        //接口调用参数,用户组为Staff
        var group_id = "Staff";
        //可选参数,检测是否为活体
        Dictionary<string, object> options = new Dictionary<string, object>()
        {
            {"ext_fields","faceliveness"}
          }; 
        var result = client.Identify(group_id, image1,options);
        //先判断脸是不是在上面,在继续看有匹配的没,否则提示放上脸
        //得到根节点
        JObject jo_result = (JObject)JsonConvert.DeserializeObject(result.ToString());
        if ((string)jo_result["error_msg"] != null)
        {
            MessageBox.Show("对不起,请把脸放在镜头上!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
        }
        else
        {
            //检测到脸
            //得到result节点
            JArray jo_age = (JArray)JsonConvert.DeserializeObject(jo_result["result"].ToString());
            foreach (var val in jo_age)
            {
                id = long.Parse(((JObject)val)["uid"].ToString());  //获取uid
                string scores = ((JObject)val)["scores"].ToString();//获取人脸对比的scores
                string facelive = ((JObject)val)["faceliveness"].ToString(); //获取活体检测的分数
                faceliveness = Convert.ToDouble(facelive);
                MessageBox.Show(facelive);

2个回答

你这个是V3版的SDK,我用的是V2版的,问题已经自行解决,是因为返回的faceliveness是在json数组中的ext_fields数组里,中断时没仔细看json数组,后来打开count看到了出了result数组后面其他数组,里面有ext_fields数组,进而找到了faceliveness的值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!