如何在实时预览,面部检测android上检测面部方向的变化

时间:2017-05-24 07:35:16

标签: android android-vision

我正在使用google-face detection API开发应用程序,我使用了示例项目,我需要的是,我想根据面部方向的变化添加叠加图像(蒙版),例如:如果面部被旋转到右侧或左侧我想通过取坐标值来更新叠加的图像。如何做到这一点?。任何人都可以帮忙。谢谢。

1 个答案:

答案 0 :(得分:2)

我已经通过检测到面部的Euler Z值解决了这个问题。我发布了我的代码:

当方向改变时,我已经在检测到的面上旋转了矩形和蒙版位图;

RectF dest = new RectF((int) left, (int) top, (int) right, (int) bottom);

        Matrix m = new Matrix();

        m.setRotate(face.getEulerZ(),dest.centerX(),dest.centerY());
        m.mapRect(dest);

旋转位图。

public Bitmap rotate_bitmap(Bitmap bmp,float degree){
    Matrix matrix = new Matrix();

    matrix.postRotate(degree);

    return Bitmap.createBitmap(bmp , 0, 0, bmp .getWidth(), bmp .getHeight(), matrix, true);
}

在画布上绘制旋转蒙版。

            canvas.drawBitmap(rotate_bitmap(faceTrackerActivity.getBitmapItem("face"),face.getEulerZ()), null, dest, null);

另外,将FAST MODE设置为面部检测器。

FaceDetector detector = new FaceDetector.Builder(context)
            .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)


            .setMode(FaceDetector.FAST_MODE)
            .build();`