Firebase ML Kit无法检测到面部

时间:2020-02-07 03:48:27

标签: android firebase firebase-mlkit

我正在使用Google Firebase的ML Kit来检测从手机摄像头捕获的图像的面部轮廓。但是,它实际上不会检测到任何面孔。我已通过在ImageView中显示图像来验证是否已从相机捕获并正确保存了图像。我还确保添加

 <meta-data android:name="com.google.android.gms.vision.DEPENDENCIES" android:value="face"/>

到AndroidManifest.xml和

implementation 'com.google.firebase:firebase-ml-vision:24.0.1'
implementation 'com.google.firebase:firebase-ml-vision-face-model:19.0.0'

到应用程序的build.gradle。

这是Firebase代码:

        FirebaseApp.initializeApp(context);
        FirebaseVisionFaceDetectorOptions realTimeOpts =
                new FirebaseVisionFaceDetectorOptions.Builder()
                        .setPerformanceMode(FirebaseVisionFaceDetectorOptions.ACCURATE)
                        .setContourMode(FirebaseVisionFaceDetectorOptions.ALL_CONTOURS)
                        .build();

        fbImage = FirebaseVisionImage.fromBitmap(portrait);


        FirebaseVisionFaceDetector detector = FirebaseVision.getInstance()
                .getVisionFaceDetector(realTimeOpts);

        Task<List<FirebaseVisionFace>> result =
                detector.detectInImage(fbImage)
                        .addOnSuccessListener(
                                new OnSuccessListener<List<FirebaseVisionFace>>() {
                                    @Override
                                    public void onSuccess(List<FirebaseVisionFace> faces) {

                                        Log.d(TAG, "No. Faces Detected: " + faces.size());


                                    }
                                })
                        .addOnFailureListener(
                                new OnFailureListener() {
                                    @Override
                                    public void onFailure(@NonNull Exception e) {
                                        Log.d(TAG, e.getMessage());
                                    }
                                });

有人知道为什么这可能没有检测到任何东西吗?

2 个答案:

答案 0 :(得分:0)

最近我遇到了这个问题。我的解决方案是声明特定的面孔。然后使用清单来声明要识别的所有面孔。这是这样做的链接:
这是firebase-ml-kit

答案 1 :(得分:0)

Firebase实际上不是问题,而是图像问题。显然,Samsung旋转了所捕获图像的方向,并且Firebase无法检测到人脸,因为它已被旋转了90度。只需将图像旋转回纵向即可解决。 Captured Photo orientation is changing in android