gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:27 25 4
gpt4 key购买 nike

我已将 MLkit FaceDetection 集成到我的 android 应用程序中。我引用了以下网址

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

在“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());
}
}

我想知道如何将这个 FirebaseVisionFace 对象转换为位图。我想提取面部图像并将其显示在 ImageView 中。谁能帮帮我吗 。提前致谢。

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

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

最佳答案

您从位图中创建了 FirebaseVisionImage。检测返回后,每个 FirebaseVisionFace 将边界框描述为 Rect,您可以使用它从原始位图中提取检测到的人脸,例如使用 Bitmap.createBitmap() .

关于android - MLKit Firebase android - 如何将 FirebaseVisionFace 转换为图像对象(如位图)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51335588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com