Expo配置expo-face-detector后无法获取人脸关键点坐标怎么办
解决expo-face-detector无法获取人脸关键点坐标的方案
核心问题
你配置的人脸检测属性名存在大小写错误,React Native组件属性大小写敏感,expo-camera 支持的人脸检测配置属性为小写开头的 faceDetectorSettings,你代码中使用的大写开头 FaceDetectorSettings 属于无效自定义属性,你配置的关键点检测规则完全未生效,系统默认不会返回人脸关键点数据。
修复步骤
- 修正Camera组件的属性名,将
FaceDetectorSettings改为faceDetectorSettings,修改后的代码如下:
<Camera style={{ flex: 1 }} type='front' onFacesDetected={faceDetected} faceDetectorSettings={{ mode: FaceDetector.Constants.Mode.accurate, detectLandmarks: FaceDetector.Constants.Landmarks.all, runClassifications: FaceDetector.Constants.Classifications.all, minDetectionInterval: 5000, tracking: true }} >
- 额外检查项,避免其他原因导致的配置不生效:
- 确保
expo、expo-camera、expo-face-detector三个依赖的版本互相兼容,版本不匹配会导致原生模块功能异常 - 如果你使用Expo Go预览项目,需保证Expo Go版本和项目使用的Expo SDK版本一致
- 建议将
tracking参数设置为true,可提升连续场景下的关键点检测稳定性 - 部分老旧安卓设备对人脸关键点检测支持度较差,可更换iOS设备或主流高版本安卓设备测试验证
修改完成后重新运行项目,faceDetected回调返回的人脸对象中就会包含rightEyePosition、leftEyePosition、noseBasePosition等你需要的关键点坐标数据。
内容的提问来源于stack exchange,提问作者Jumin Kamki
相关产品推荐
相关产品推荐

