Я создаю приложение для камеры Android, использующее ML Kit Face Detection, которое помогает пользователям захватывать 4 разных угла головы: спереди, сбоку, в макушке и затылке. Приложение использует углы Эйлера (тангаж/рыскание) для проверки правильного положения головы перед разрешением захвата.
Текущая реализация
Анализатор My ML Kit успешно обнаруживает первые три позы:
Код: Выделить всё
val face = facesInCircle[0]
val eulerYaw = face.headEulerAngleY
val eulerPitch = face.headEulerAngleX
isPoseMatch = when (currentMode) {
CaptureMode.FRONT_FACE -> {
abs(eulerYaw) < 20f && abs(eulerPitch) < 15f
}
CaptureMode.SIDE_PROFILE -> {
(eulerYaw in -85f..-25f || eulerYaw in 25f..85f) && abs(eulerPitch) < 20f
}
CaptureMode.TOP_FOREHEAD -> {
(eulerPitch < -15f && abs(eulerYaw) < 25f) || (faceRelativeY > 0.55f)
}
CaptureMode.BACK_HEAD -> {
// ??? ML Kit returns 0 faces when user turns around
}
}
Когда пользователь поворачивается, чтобы показать затылок, ML Kit возвращает ноль обнаруженных лиц, поскольку на нем нет видимых ориентиров лица (глаза, нос, рот). Значение headEulerAngleY, приближающееся к ±180°, никогда не срабатывает, поскольку отслеживание лица теряется до достижения этого угла.
Существует ли библиотека или платформа, которая может обнаруживать затылок в Android?
Подробнее здесь: https://stackoverflow.com/questions/798 ... facial-fea
Мобильная версия