我正在尝试制作一个简单的应用程序来指示用户(音频指令)何时检测到面部并根据跟踪的幸福程度。我使用FaceTracker作为我的程序的基础。
我无法识别何时检测到人脸以及在哪里可以将音频指令插入到人脸检测管道中。我的意思是控制如何在管道中流动。
有人可以就此提出建议吗?
我正在尝试制作一个简单的应用程序来指示用户(音频指令)何时检测到面部并根据跟踪的幸福程度。我使用FaceTracker作为我的程序的基础。
我无法识别何时检测到人脸以及在哪里可以将音频指令插入到人脸检测管道中。我的意思是控制如何在管道中流动。
有人可以就此提出建议吗?
API 中有一个 Tracker 类,您可以在最初检测、更新和离开框架时为回调扩展该类。例如,FaceTracker 有以下代码:
private class GraphicFaceTracker extends Tracker<Face> {
...
@Override
public void onNewItem(int faceId, Face item) {
mFaceGraphic.setId(faceId);
}
@Override
public void onUpdate(FaceDetector.Detections<Face> detectionResults, Face face) {
mOverlay.add(mFaceGraphic);
mFaceGraphic.updateFace(face);
}
我认为您想要做的是根据为相关面部传入的值,在 onUpdate 方法中调用音频指令的代码。
本教程讨论了面部跟踪器应用程序的管道控制流程:
https://developers.google.com/vision/face-tracker-tutorial#creating_the_face_detector_pipeline
在您的情况下,如果您只跟踪单个用户,您可能希望使用 LargestFaceFocusingProcessor 而不是面部跟踪器示例中使用的 MultiProcessor。不同之处在于 LargestFaceFocusingProcessor 专门用于仅跟踪一张人脸(即用户)而不是多张人脸。安装程序会是这样的:
Tracker<Face> myTracker = new Tracker<Face>() {
@Override
public void onUpdate(FaceDetector.Detections<Face> detectionResults, Face face) {
// issue audio instructions
}
};
detector.setProcessor(
new LargestFaceFocusingProcessor.Builder(detector, myTracker).build());