Обнаружение лица и анализ эмоций в Flutter с помощью Google ML Kit
FlutterPulseЭта статья переведена специально для канала FlutterPulse. В этом канале вы найдёте много интересных вещей, связанных с Flutter. Не забывайте подписываться! 🚀

Распознавание лиц больше не является чем-то из области научной фантастики. От разблокировки смартфонов до измерения настроений клиентов в розничной торговле, обнаружение лиц выросло в один из основных функций современных приложений. С помощью Google ML Kit и Flutter вы можете принести эту магию в ваше приложение — быстро, офлайн и на устройстве.
Распознавание лиц больше не является чем-то из области научной фантастики. От разблокировки смартфонов до измерения настроений клиентов в розничной торговле, обнаружение лиц выросло в один из основных функций современных приложений. С помощью Google ML Kit и Flutter вы можете принести эту магию в ваше приложение — быстро, офлайн и на устройстве.
В этой истории мы рассмотрим, как интегрировать обнаружение лиц в Flutter с помощью ML Kit и даже пойти дальше с базовым анализом эмоций.
Почему обнаружение лиц?
Обнаружение лиц не только о том, чтобы распознавать лицо — оно может помочь вам:
- Обнаруживать лица в прямом потоке камеры или фотографиях
- Отслеживать несколько лиц одновременно
- Определять ориентиры лица (глаза, нос, рот)
- Анализировать вращение головы и вероятность улыбки
- Создавать веселые фильтры, отслеживать фокус, приложения, осведомленные об эмоциях
️ Начало работы
Шаг 1: Добавление зависимостей
Обновите ваш pubspec.yaml следующим образом:
dependencies: google_mlkit_face_detection: ^0.10.0 camera: ^0.10.5 permission_handler: ^11.0.0
Выполните:
flutter pub get
Шаг 2: Настройка Android и iOS
Android
- Установите
minSdkVersionравным 21 или выше - Добавьте разрешение камеры в
AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA"/>
iOS
Добавьте разрешение на использование камеры в Info.plist:
<key>NSCameraUsageDescription</key> <string>Мы нуждаемся в доступе к камере для обнаружения лиц.</string>
Захват прямого потока
Используйте плагин camera для доступа и передачи потока камеры устройства.
Инициализируйте контроллер камеры и запустите поток изображений:
final controller = CameraController(camera, ResolutionPreset.medium); await controller.initialize(); await controller.startImageStream(onImageAvailable);
Обнаружение лиц
Настройте обнаруживатель лиц ML Kit:
final options = FaceDetectorOptions( enableContours: true, enableClassification: true, // Включает вероятности улыбки и открытия глаза performanceMode: FaceDetectorMode.fast, ); final faceDetector = FaceDetector(options: options);
Затем обработайте входящий поток изображений:
Future<void> onImageAvailable(CameraImage image) async {
final inputImage = getInputImageFromCameraImage(image);
final faces = await faceDetector.processImage(inputImage);
for (Face face in faces) {
final smileProb = face.smilingProbability;
final leftEyeOpenProb = face.leftEyeOpenProbability;
print("Улыбка: $smileProb, Левый глаз открыт: $leftEyeOpenProb");
}
}
Используйте эти вероятности, чтобы сделать вывод о простых эмоциях, таких как:
- Счастлив если
smileProbability > 0.7 - Сонный или моргает если
leftEyeOpenProbability < 0.3
Обнаружение эмоций (базовое)
Хотя ML Kit не direkt标.labels эмоций, таких как "счастлив", "грустный" или "злой", вы можете вывести базовые эмоциональные состояния путем комбинации улыбки и данных о открытости глаз.
Например:
String analyzeEmotion(Face face) {
if (face.smilingProbability!= null && face.smilingProbability! > 0.8) {
return "Счастлив";
} else if (face.leftEyeOpenProbability!= null && face.leftEyeOpenProbability! < 0.3) {
return "Сонный";
}
return "Нейтральный";
}
Для более глубокого обнаружения эмоций рассмотрите возможность интеграции TensorFlow Lite с предварительно обученными моделями.
Реальные случаи использования
- Фильтры для селфи в реальном времени
- Приложения с разблокировкой по улыбке
- Инструменты для отслеживания эмоций клиентов
- Отслеживание посещаемости по присутствию лица
- Системы безопасности и контроля доступа
️ Приватность и этика
Всегда информируйте пользователей при захвате лицевых данных. Поскольку ML Kit обрабатывает все на устройстве, вы получаете сильную приватность по дизайну — никакие данные не покидают телефон пользователя.
Но как лучшая практика:
- Запросить явное согласие
- Избегать хранения данных о лице, если это не необходимо
- Быть прозрачным в своей политике конфиденциальности
Тестирование функции
Используйте реальные устройства для тестирования обнаружения лиц. Эмуляторы в целом не поддерживают потоки камеры, и обнаружение лиц может вести себя по-разному в зависимости от освещения, угла и качества камеры.
Что дальше?
Хотите пойти дальше?
- Обнаруживать выражения лица с помощью пользовательских моделей ML
- Создавать фильтры AR с помощью ориентиров лица
- Объединять с речевым вводом для чат-ботов AI
- Использовать TensorFlow Lite для более глубокого классификации эмоций
Подводя итоги
Обнаружение лиц в Flutter проще, чем когда-либо, благодаря Google ML Kit. Будете ли вы строить развлекательное приложение или инструмент для повышения производительности, функции лица и базовые инсайты эмоций могут сделать ваш интерфейс более интерактивным и интеллектуальным.
Пусть ваше приложение увидит что происходит — и отреагирует соответствующим образом.