#flutter #dart #firebase-mlkit
# #трепетание #dart #firebase-mlkit
Вопрос:
Я использую firebase_ml_vision
для обнаружения лиц в потоке изображений с камеры. Для этого я использую
controller.startImageStream((CameraImage image) => detectFace(image)))
void detectFace(CameraImage image) {
final firebaseImage = FirebaseVisionImage.fromBytes(
_concatenatePlanes(cameraImage.planes), // Convert from YUV_420_888 to NV21
_buildMetaData(cameraImage, rotation),
);
}
_concatenatePlanes, _buildMetaData, _rotation
взяты из примера плагина Flutter (ссылка).
Но, к сожалению, он не обнаруживает никакого подобного лица. Но если я сделаю снимок того же изображения с помощью опции камеры, а затем обнаружу на нем лицо, оно будет работать правильно. Я предполагаю, что есть какая-то проблема в преобразовании формата.
Что здесь может быть не так и как я могу это исправить?
Редактировать — я уже пробовал использовать разные значения для поворота и использовать еще одно устройство (пробовал только на обеих платформах Android).
— Спасибо
Ответ №1:
Существует некоторая проблема с последней версией плагина камеры. Когда я переключил его 0.5.8 1
, он работал гладко как с моим приложением, так и с примером.
Я направил запрос владельцам, чтобы определить причину и устранить ее в будущем — https://github.com/FirebaseExtended/flutterfire/issues/4549#issuecomment-753448995
Ответ №2:
Я столкнулся с теми же проблемами в своем проекте.
В моем случае я забыл установить модель лица, как описано в readme firebase_ml_vision:
iOS Если вы используете один из встроенных API-интерфейсов, включите соответствующую модель библиотеки ML Kit в свой Podfile. Затем запустите pod update в терминале в том же каталоге, что и ваш Podfile.
pod 'Firebase/MLVisionBarcodeModel'
pod 'Firebase/MLVisionFaceModel'
pod 'Firebase/MLVisionLabelModel'
pod 'Firebase/MLVisionTextModel'
Android
Если вы используете распознавание контуров лица на устройстве, включите в свой файл build.gradle на уровне приложения новейший соответствующий ML Kit: зависимость модели распознавания лиц.
android {
dependencies {
// ...
api 'com.google.firebase:firebase-ml-vision-face-model:17.0.2'
}
}
Я также нашел подключаемый модуль, в котором уже реализован весь шаблон, я только что попробовал и работает нормально flutter_camera_ml_vision:
https://pub.dev/packages/flutter_camera_ml_vision
И, если вам нужен код в классе, я также нашел этот проект, который также отлично работает (проект нуждается в обновлениях, но класс FaceDetection вы можете скопировать и вставить в свой проект, который очень похож на код, который у вас есть, это работает просто отлично: https://github.com/giandifra/Flutter-Smile-Face-Detection/blob/master/lib/face_detection_camera.dart