如何在实时预览、人脸检测和android上检测人脸方向的变化

如何在实时预览、人脸检测和android上检测人脸方向的变化,android,android-vision,Android,Android Vision,我正在开发一个应用程序使用谷歌人脸检测API,我已经使用了样本项目,我需要的是,我想添加叠加图像(面具)的基础上面对方向的变化,例如:如果面旋转到右侧或左侧,我想通过获取坐标值来更新覆盖图像。如何操作?有人能帮忙吗。提前谢谢。我通过获取检测到的面的Euler Z值来解决此问题。我正在发布代码: 当方向改变时,我在检测到的人脸上旋转了矩形和遮罩位图 RectF dest = new RectF((int) left, (int) top, (int) right, (int) bottom);

我正在开发一个应用程序使用谷歌人脸检测API,我已经使用了样本项目,我需要的是,我想添加叠加图像(面具)的基础上面对方向的变化,例如:如果面旋转到右侧或左侧,我想通过获取坐标值来更新覆盖图像。如何操作?有人能帮忙吗。提前谢谢。

我通过获取检测到的面的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);
另外,将快速模式设置为面部检测器

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


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

我已经使用了您的代码,但在androidfloat xOffset=scaleX(face.getWidth()/2.0f)中旋转后图像不会立即更改;float yOffset=scaleY(face.getHeight()/2.0f);左浮动=x-xOffset;浮顶=y-偏移量;右浮动=x+xOffset;浮动底部=y+y偏移;