如何提取faceapi检测的最高置信度人脸表情并存入变量?
提取faceapi.js中置信度最高的表情
要从faceapi.js返回的expressions对象中提取置信度最高的表情,你可以通过对象转数组+排序的方式快速实现,以下是具体步骤和代码:
实现步骤
- 将
expressions键值对对象转换为二维数组,每个元素包含表情名称和对应置信度 - 按置信度从高到低对数组排序
- 提取排序后数组的第一个元素,即为置信度最高的表情
代码示例
// 假设已通过faceapi获取到表情检测结果 const detectionResult = await faceapi.detectSingleFace(inputImage).withFaceExpressions(); // 处理expressions对象,提取最高置信度表情 if (detectionResult?.expressions) { // 转换为键值对数组并按置信度降序排序 const sortedExprs = Object.entries(detectionResult.expressions).sort((a, b) => b[1] - a[1]); // 存储最高置信度的表情名称和数值到变量 const topExpressionName = sortedExprs[0][0]; // 如"happy"、"neutral"等 const topExpressionConfidence = sortedExprs[0][1]; // 对应置信度数值(0-1之间) // 后续可将这两个变量用于存储逻辑 console.log(`最高置信度表情:${topExpressionName},置信度:${topExpressionConfidence.toFixed(2)}`); }
注意事项
- faceapi默认返回的表情类型包括:
neutral、happy、sad、angry、fearful、disgusted、surprised,排序逻辑会覆盖所有这些类型 - 若存在多个表情置信度接近的情况,此方法会取排序后的第一个结果;如果需要处理并列最高的场景,可以遍历排序后的数组,筛选出置信度等于最大值的所有表情
内容的提问来源于stack exchange,提问作者Samir Paruthi
相关产品推荐
相关产品推荐

