Как отслеживать лицо с FaceDetector?

Я хочу, чтобы отслеживание лица с FaceDetector, как это.
https://github.com/googlesamples/android-vision/tree/master/visionSamples/FaceTracker

В этом примере установите ByteBuffer в Frame.imageData следующим образом.

 outputFrame = new Frame.Builder()
            .setImageData(mPendingFrameData, mPreviewSize.getWidth(),
                                mPreviewSize.getHeight(), ImageFormat.NV21)
            .setId(mPendingFrameId)
            .setTimestampMillis(mPendingTimeMillis)
            .setRotation(mRotation)
            .build();

Но я установил растровое изображение на Frame следующим образом.

//data is image data as byte.
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
outputFrame = new Frame.Builder()
            .setBitmap(bitmap)
            .setId(frameId)
            .setTimestampMillis(time)
            .build();

И используйте FaceDetector, как это.

    FaceDetector fd = new FaceDetector.Builder(this.context)
                        .setTrackingEnabled(true)
                        .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
                        .build();

        fd.setProcessor(new MultiProcessor.Builder<Face>(new GraphicFaceTrackerFactory()).build());
        fd.receiveFrame(frame);

     private class GraphicFaceTrackerFactory implements MultiProcessor.Factory<Face> {
        @Override
        public Tracker<Face> create(Face face) {
            return new GraphicFaceTracker();
        }
     }

private class GraphicFaceTracker extends Tracker<Face> {

    GraphicFaceTracker() {}

    @Override
    public void onNewItem(int faceId, Face face) {
        Log.d(Constants.LOG_TAG, "onNewItem. Face Id => "+faceId);//here
    }

    @Override
    public void onUpdate(FaceDetector.Detections<Face> detectionResults, Face face) {
    }

    @Override
    public void onMissing(FaceDetector.Detections<Face> detectionResults) {

    }

    @Override
    public void onDone() {

    }
}

Я ожидал, что один и тот же faceId будет введен в onNewItem() до тех пор, пока в кадре останется одно и то же лицо, но каждый раз введенный идентификатор был другим.

У тебя есть идеи?

【Дополнительная информация】
My В моем приложении он делает непрерывные снимки со скоростью 7,5 кадров в секунду.

0 ответов

Другие вопросы по тегам