Firebase ML Kit 无法检测人脸
Firebase ML Kit does not detect faces
我正在使用 Google Firebase 的机器学习套件来检测从 phone 相机拍摄的图像的面部轮廓。但是,它实际上并没有检测到任何面孔。我已经通过在 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());
}
});
有谁知道为什么这可能检测不到任何东西?
我最近遇到过这个问题。我的解决方案是声明特定的面孔。然后使用清单声明要识别的所有面孔。这是 link 这样做的方法:
这里是firebase-ml-kit!
其实不是Firebase的问题,而是图片的问题。显然,三星旋转了拍摄图像的方向,而 Firebase 无法检测到面部,因为它旋转了 90 度。通过简单地将图像旋转回纵向来修复它。 Captured Photo orientation is changing in android
我正在使用 Google Firebase 的机器学习套件来检测从 phone 相机拍摄的图像的面部轮廓。但是,它实际上并没有检测到任何面孔。我已经通过在 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());
}
});
有谁知道为什么这可能检测不到任何东西?
我最近遇到过这个问题。我的解决方案是声明特定的面孔。然后使用清单声明要识别的所有面孔。这是 link 这样做的方法:
这里是firebase-ml-kit!
其实不是Firebase的问题,而是图片的问题。显然,三星旋转了拍摄图像的方向,而 Firebase 无法检测到面部,因为它旋转了 90 度。通过简单地将图像旋转回纵向来修复它。 Captured Photo orientation is changing in android