即使没有人脸,expo FaceDetector 也会在“准确”模式下继续触发“onFacesDetected”事件
Posted
技术标签:
【中文标题】即使没有人脸,expo FaceDetector 也会在“准确”模式下继续触发“onFacesDetected”事件【英文标题】:expo FaceDetector keep triggering "onFacesDetected" event in "accurate" mode even without face 【发布时间】:2021-01-25 23:07:48 【问题描述】:我是原生反应的新手。 我正在使用 expo FaceDetector 来检测人脸。 当我在“fast”模式下使用它时,它会正确触发“onFacesDetected”事件。 但是当我使用“accurate”mode“onFacesDetected”事件时,会继续触发(在“minDetectionInterval”上) (假设检测到人脸后触发)。
这是一个展览问题还是我的代码有误? 任何帮助将不胜感激。 1.下面是快速模式代码
<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.下面是准确的模式代码
<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
【问题讨论】:
【参考方案1】:我认为这可能会有所帮助。问题是 onFacesDetected 返回一个对象,而不是布尔值。
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>
)
【讨论】:
以上是关于即使没有人脸,expo FaceDetector 也会在“准确”模式下继续触发“onFacesDetected”事件的主要内容,如果未能解决你的问题,请参考以下文章