MLKit Firebase android - 如何将FirebaseVisionFace转换为图像对象(如Bitmap)?

Man*_*gan 9 android android-camera firebase firebase-mlkit

我已将MLkit FaceDetection集成到我的Android应用程序中.我在下面提到过URL

https://firebase.google.com/docs/ml-kit/android/detect-faces

面部检测处理器类的代码是

import java.io.IOException;
import java.util.List;

/** Face Detector Demo. */
public class FaceDetectionProcessor extends VisionProcessorBase<List<FirebaseVisionFace>> {

  private static final String TAG = "FaceDetectionProcessor";

  private final FirebaseVisionFaceDetector detector;

  public FaceDetectionProcessor() {

    FirebaseVisionFaceDetectorOptions options =
        new FirebaseVisionFaceDetectorOptions.Builder()
            .setClassificationType(FirebaseVisionFaceDetectorOptions.ALL_CLASSIFICATIONS)
            .setLandmarkType(FirebaseVisionFaceDetectorOptions.ALL_LANDMARKS)
            .setTrackingEnabled(true)
            .build();

    detector = FirebaseVision.getInstance().getVisionFaceDetector(options);
  }

  @Override
  public void stop() {
    try {
      detector.close();
    } catch (IOException e) {
      Log.e(TAG, "Exception thrown while trying to close Face Detector: " + e);
    }
  }

  @Override
  protected Task<List<FirebaseVisionFace>> detectInImage(FirebaseVisionImage image) {
    return detector.detectInImage(image);
  }

  @Override
  protected void onSuccess(
      @NonNull List<FirebaseVisionFace> faces,
      @NonNull FrameMetadata frameMetadata,
      @NonNull GraphicOverlay graphicOverlay) {
      graphicOverlay.clear();

    for (int i = 0; i < faces.size(); ++i) {
      FirebaseVisionFace face = faces.get(i);
      FaceGraphic faceGraphic = new FaceGraphic(graphicOverlay);
      graphicOverlay.add(faceGraphic);
      faceGraphic.updateFace(face, frameMetadata.getCameraFacing());
    }




  }

  @Override
  protected void onFailure(@NonNull Exception e) {
    Log.e(TAG, "Face detection failed " + e);
  }
}
Run Code Online (Sandbox Code Playgroud)

在"onSuccess"监听器中,我们将获得"FirebaseVisionFace"类对象的数组,这些对象将具有"边界框"的面部.

@Override
      protected void onSuccess(
          @NonNull List<FirebaseVisionFace> faces,
          @NonNull FrameMetadata frameMetadata,
          @NonNull GraphicOverlay graphicOverlay) {
          graphicOverlay.clear();

        for (int i = 0; i < faces.size(); ++i) {
          FirebaseVisionFace face = faces.get(i);
          FaceGraphic faceGraphic = new FaceGraphic(graphicOverlay);
          graphicOverlay.add(faceGraphic);
          faceGraphic.updateFace(face, frameMetadata.getCameraFacing());
        }
      }
Run Code Online (Sandbox Code Playgroud)

我想知道如何将此FirebaseVisionFace对象转换为Bitmap.我想提取脸部图像并在ImageView中显示它.谁能帮帮我吗 .提前致谢.

注意:我从下面的URL下载了MLKit android的示例源代码

https://github.com/firebase/quickstart-android/tree/master/mlkit

gnu*_*nuf 5

您是FirebaseVisionImage从位图创建的。返回检测结果后,每个FirebaseVisionFace边界框都将其描述为一个边界框Rect,您可以使用该边界框从原始位图提取检测到的面部,例如使用Bitmap.createBitmap()

  • 您能否发布您的解决方案代码以供参考? (4认同)