Face 对象的属性在 firebase ml vision flutter 中始终为 null
Attributes of Face object is always null in firebase ml vision flutter
我按照此 README 中的所有说明进行面部检测,当我尝试访问 face.leftEyeOpenProbability
、face.rightEyeOpenProbability
或 face.smilingProbability
等面部属性时,它是尽管检测到面孔.
我试图通过两种方式来解决这个问题,
1. flutter使用旧的firebase_ml_vision插件(不兼容AndroidX)
firebase_ml_vision: ^0.2.1
使用函数 detectInImage()
的地方。
2. 使用新的firebase_ml_vision插件(兼容AndroidX)
firebase_ml_vision: ^0.6.0+2
使用函数 processImage()
。
在这两种方法中 属性值都是 null.
这是使用最新插件检测人脸的片段。
void _getImageAndDetectFace() async {
final imageFile = await ImagePicker.pickImage(source: ImageSource.camera);
final image = FirebaseVisionImage.fromFile(imageFile);
final faceDetector = FirebaseVision.instance.faceDetector(FaceDetectorOptions(
mode: FaceDetectorMode.accurate,
enableLandmarks: true,
));
final faces = await faceDetector.detectInImage(image); //this is not null
setState(() {
if (mounted) {
_imageFile = imageFile;
_faces = faces;
for (Face face in faces) { //face is detected here, but...
print('left eye : ${face.leftEyeOpenProbability}'); //prints null
print('right eye : ${face.rightEyeOpenProbability}'); //prints null
print('smiling : ${face.smilingProbability}'); //prints null
}
}
});
}
请帮我解决这个问题。
我有完全相同的错误。
阅读文档后,我在class FaceDetector
中找到了变量enableClassification
。
此变量的默认值为 False。要使用眼睛和微笑的细节必须启用此变量。
在你的情况下是这样的:
...
final faceDetector = FirebaseVision.instance.faceDetector(FaceDetectorOptions(
mode: FaceDetectorMode.accurate,
enableLandmarks: true,
enableClassification: true
));
...
希望对您有所帮助。
我按照此 README 中的所有说明进行面部检测,当我尝试访问 face.leftEyeOpenProbability
、face.rightEyeOpenProbability
或 face.smilingProbability
等面部属性时,它是尽管检测到面孔.
我试图通过两种方式来解决这个问题,
1. flutter使用旧的firebase_ml_vision插件(不兼容AndroidX)
firebase_ml_vision: ^0.2.1
使用函数 detectInImage()
的地方。
2. 使用新的firebase_ml_vision插件(兼容AndroidX)
firebase_ml_vision: ^0.6.0+2
使用函数 processImage()
。
在这两种方法中 属性值都是 null.
这是使用最新插件检测人脸的片段。
void _getImageAndDetectFace() async {
final imageFile = await ImagePicker.pickImage(source: ImageSource.camera);
final image = FirebaseVisionImage.fromFile(imageFile);
final faceDetector = FirebaseVision.instance.faceDetector(FaceDetectorOptions(
mode: FaceDetectorMode.accurate,
enableLandmarks: true,
));
final faces = await faceDetector.detectInImage(image); //this is not null
setState(() {
if (mounted) {
_imageFile = imageFile;
_faces = faces;
for (Face face in faces) { //face is detected here, but...
print('left eye : ${face.leftEyeOpenProbability}'); //prints null
print('right eye : ${face.rightEyeOpenProbability}'); //prints null
print('smiling : ${face.smilingProbability}'); //prints null
}
}
});
}
请帮我解决这个问题。
我有完全相同的错误。
阅读文档后,我在class FaceDetector
中找到了变量enableClassification
。
此变量的默认值为 False。要使用眼睛和微笑的细节必须启用此变量。
在你的情况下是这样的:
...
final faceDetector = FirebaseVision.instance.faceDetector(FaceDetectorOptions(
mode: FaceDetectorMode.accurate,
enableLandmarks: true,
enableClassification: true
));
...
希望对您有所帮助。