Firebase ML Kit 无法检测到人脸

Posted

技术标签:

【中文标题】Firebase ML Kit 无法检测到人脸【英文标题】:Firebase ML Kit does not detect faces 【发布时间】:2020-05-23 04:46:40 【问题描述】:

我正在使用 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());
                                    
                                );

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

这是我使用的网站,也是我获得上述代码的地方。你能说得更具体点吗?【参考方案2】:

这实际上不是 Firebase 的问题,而是图像的问题。显然,三星旋转了捕获图像的方向,而 Firebase 无法检测到脸部,因为它旋转了 90 度。通过简单地将图像旋转回纵向来修复它。 Captured Photo orientation is changing in android

【讨论】:

以上是关于Firebase ML Kit 无法检测到人脸的主要内容,如果未能解决你的问题,请参考以下文章