Атрибуты объекта Face всегда равны нулю в огненной базе. - PullRequest
1 голос
/ 14 марта 2019

Я следовал всем инструкциям из этого README для распознавания лиц, и когда я пытаюсь получить доступ к атрибутам лица, таким как face.leftEyeOpenProbability, face.rightEyeOpenProbability или face.smilingProbability, он выбрасывает меня в ноль, хотя лица обнаружены .

Я попытался приблизиться к этому двумя способами,
1. Использование старого плагина firebase_ml_vision для флаттера (не совместимого с 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
      }
    }
  });
}

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 19 апреля 2019

У меня точно такая же ошибка.

После прочтения документации я нашел в классе FaceDetector переменную enableClassification.Эта переменная имеет значение по умолчанию False.Для использования ума глаз и улыбки необходимо включить эту переменную.

В вашем случае будет что-то вроде этого:

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

Надеюсь, это поможет.

...