Facebase对象的属性在firebase ml vision flutter中始终为null

问题描述 投票:1回答:1

我按照这个README的所有指令进行面部检测,当我尝试访问像face.leftEyeOpenProbabilityface.rightEyeOpenProbabilityface.smilingProbability这样的面部属性时,尽管检测到了面部,但它仍然无效。 我尝试以两种方式解决这个问题, 1.使用旧的firebase_ml_vision插件进行flutter(与AndroidX不兼容) firebase_ml_vision: ^0.2.1使用函数detectInImage()。 2.使用新的firebase_ml_vision插件(与AndroidX兼容) firebase_ml_vision: ^0.6.0+2使用功能processImage()。 在这两种方法中,属性值都为空。 这是使用最新插件检测面部的片段。

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

请帮我解决这个问题。

firebase dart flutter firebase-mlkit mlvision
1个回答
0
投票

我有完全相同的错误。

阅读文档后,我在课堂上找到了FaceDetector变量enableClassification。此变量的默认值为False。对于使用眼睛的微笑和微笑必须启用此变量。

在你的情况下将是这样的:

     ... 
     final faceDetector = FirebaseVision.instance.faceDetector(FaceDetectorOptions(
        mode: FaceDetectorMode.accurate,
        enableLandmarks: true,
        enableClassification: true
        ));
    ...

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.