expo FaceDetector 即使没有人脸也会在 "accurate" 模式下继续触发 "onFacesDetected" 事件
expo FaceDetector keep triggering "onFacesDetected" event in "accurate" mode even without face
我是 React Native 的新手。
我正在使用 expo FaceDetector 来检测人脸。
当我在“fast”模式下使用它时,它会正确触发“onFacesDetected”事件。
但是当我使用“accurate”mode“onFacesDetected”事件继续触发(在“minDetectionInterval")(假设检测到人脸后触发)。
这是博览会问题还是我的代码有误?
任何帮助将不胜感激。
1.below 是快速模式代码
<Camera style={styles.camara} type={type}
ref={ref}
onFacesDetected={faceDetected}
faceDetectorSettings={{
mode: FaceDetector.Constants.Mode.fast,
detectLandmarks: FaceDetector.Constants.Landmarks.all,
runClassifications: FaceDetector.Constants.Classifications.all,
minDetectionInterval: 100,
tracking: false,
}}>
</Camera>
2.below是准确模式代码
<Camera style={styles.camara} type={type}
ref={ref}
onFacesDetected={faceDetected}
faceDetectorSettings={{
mode: FaceDetector.Constants.Mode.accurate,
detectLandmarks: FaceDetector.Constants.Landmarks.all,
runClassifications: FaceDetector.Constants.Classifications.all,
minDetectionInterval: 100,
tracking: false,
}}>
</Camera>
博览会文档expo documentation
我认为这可能有所帮助。问题是 onFacesDetected returns 一个对象,而不是布尔值。
const [faceDetected, setFaceDetected] = useState(false)
const checkForFace = (obj) => {
try {
setFaceDetected(obj.faces.length==0?false:true);
//or
setFaceDetected(obj.faces.length);
//0 is false and any natural number(1,2,3...) is true
} catch (error) {
console.error(error);
}
}
return (
<Camera style={styles.camara} type={type}
ref={ref}
onFacesDetected={(e)=>checkForFace(e)}
faceDetectorSettings={{
mode: FaceDetector.Constants.Mode.accurate,
detectLandmarks: FaceDetector.Constants.Landmarks.all,
runClassifications: FaceDetector.Constants.Classifications.all,
minDetectionInterval: 500,
tracking: true,
}}>
</Camera>
)
我是 React Native 的新手。 我正在使用 expo FaceDetector 来检测人脸。 当我在“fast”模式下使用它时,它会正确触发“onFacesDetected”事件。 但是当我使用“accurate”mode“onFacesDetected”事件继续触发(在“minDetectionInterval")(假设检测到人脸后触发)。
这是博览会问题还是我的代码有误? 任何帮助将不胜感激。 1.below 是快速模式代码
<Camera style={styles.camara} type={type}
ref={ref}
onFacesDetected={faceDetected}
faceDetectorSettings={{
mode: FaceDetector.Constants.Mode.fast,
detectLandmarks: FaceDetector.Constants.Landmarks.all,
runClassifications: FaceDetector.Constants.Classifications.all,
minDetectionInterval: 100,
tracking: false,
}}>
</Camera>
2.below是准确模式代码
<Camera style={styles.camara} type={type}
ref={ref}
onFacesDetected={faceDetected}
faceDetectorSettings={{
mode: FaceDetector.Constants.Mode.accurate,
detectLandmarks: FaceDetector.Constants.Landmarks.all,
runClassifications: FaceDetector.Constants.Classifications.all,
minDetectionInterval: 100,
tracking: false,
}}>
</Camera>
博览会文档expo documentation
我认为这可能有所帮助。问题是 onFacesDetected returns 一个对象,而不是布尔值。
const [faceDetected, setFaceDetected] = useState(false)
const checkForFace = (obj) => {
try {
setFaceDetected(obj.faces.length==0?false:true);
//or
setFaceDetected(obj.faces.length);
//0 is false and any natural number(1,2,3...) is true
} catch (error) {
console.error(error);
}
}
return (
<Camera style={styles.camara} type={type}
ref={ref}
onFacesDetected={(e)=>checkForFace(e)}
faceDetectorSettings={{
mode: FaceDetector.Constants.Mode.accurate,
detectLandmarks: FaceDetector.Constants.Landmarks.all,
runClassifications: FaceDetector.Constants.Classifications.all,
minDetectionInterval: 500,
tracking: true,
}}>
</Camera>
)