使用android vision进行人脸检测和跟踪

时间:2016-03-31 15:53:35

标签: android face-detection android-vision

我正在尝试创建一个简单的应用程序,以便在检测到面部时并根据跟踪的幸福级别指示用户(音频指令)。我使用FaceTracker作为我程序的基础。

我无法识别何时检测到脸部以及在何处可以将音频指令插入到脸部检测到的管道中。我的意思是控制如何在管道中流动。

有人可以就此提出建议吗?

1 个答案:

答案 0 :(得分:0)

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);
    }

https://github.com/googlesamples/android-vision/blob/master/visionSamples/FaceTracker/app/src/main/java/com/google/android/gms/samples/vision/face/facetracker/FaceTrackerActivity.java#L280

我认为您要做的是根据传入关联面部的值,在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());