- Новый расширенный API ARCore , работающий на фронтальной камере без датчика глубины, предлагает высококачественную сетку
468-point
3D, которая позволяет пользователям добавлять такие эффектына их лица в виде анимированных масок, очков, ретуширования кожи и т. д. Сетка обеспечивает координаты и привязки к региону , которые позволяют добавлять эти эффекты.
Iтвердо уверены, что обнаружение лицевых ориентиров производится с помощью алгоритмов компьютерного зрения под капотом ARCore 1.7 .Также важно сказать, что вы можете начать работу в Unity или в Sceneform, создав сеанс ARCore с включенным режимом «фронтальная камера» и «Расширенные грани».Обратите внимание, что другие функции AR, такие как определение плоскости, в настоящее время недоступны при использовании фронтальной камеры.AugmentedFace
расширяет Trackable
, поэтому лица обнаруживаются и обновляются точно так же, как плоскости, дополненные изображения и другие отслеживаемые элементы .
Как вы знаете, 2+ года назад Google выпустил Face API
, который выполняет распознавание лиц, которое находит лица на снимках, а также их положение (где они на картинке) и ориентацию (каким образом ониЛицом к лицу, относительно камеры).API Face позволяет вам определять ориентиры (точки интереса на лице) и выполнять классификацию, чтобы определить, являются ли глаза открытыми или закрытыми, и является ли лицо улыбающимся.Face API также обнаруживает и отслеживает лица в движущихся изображениях, что называется отслеживанием лиц.
Итак, ARCore 1.7 просто позаимствовал некоторые архитектурные элементы из Face API, и теперь он не только обнаруживает лицевые ориентиры и генерирует для них 468 точек, но и отслеживает их в реальном времени.время при 60 кадрах в секунду и придерживается трехмерной геометрии лица .
См. Обзор концепций распознавания лиц от Google .
Рассчитать канал глубины в видео, снятом с помощью движущейся камеры RGB, не является ракетостроением.Вам просто нужно применить формулу параллакса к отслеживаемым функциям.Таким образом, если амплитуда трансляции объекта на статическом объекте достаточно высока - отслеживаемый объект находится ближе к камере, а если амплитуда объекта на статическом объекте достаточно низкая - отслеживаемый объект находится дальше от камеры.Подобные подходы для расчета канала глубины вполне обычны для таких приложений для композитинга, как Foundry NUKE и Blackmagic Fusion уже более 10 лет.Теперь те же самые принципы доступны в ARCore.
Вы не можете отклонить алгоритм обнаружения / отслеживания лиц для пользовательского объекта или другой части тела, например руки. API Augmented Faces , разработанный для простых лиц.
Вот как выглядит Java-код для активации функции Augmented Faces:
// Create ARCore session that supports Augmented Faces
public Session createAugmentedFacesSession(Activity activity) throws
UnavailableException {
// Use selfie camera
Session session = new Session(activity,
EnumSet.of(Session.Feature.FRONT_CAMERA));
// Enabling Augmented Faces
Config config = session.getConfig();
config.setAugmentedFaceMode(Config.AugmentedFaceMode.MESH3D);
session.configure(config);
return session;
}
Тогда получитесписок обнаруженных лиц:
Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);
И наконец рендеринг эффекта:
for (AugmentedFace face : faceList) {
// Create a face node and add it to the scene.
AugmentedFaceNode faceNode = new AugmentedFaceNode(face);
faceNode.setParent(scene);
// Overlay the 3D assets on the face
faceNode.setFaceRegionsRenderable(faceRegionsRenderable);
// Overlay a texture on the face
faceNode.setFaceMeshTexture(faceMeshTexture);
// .......
}
Надеюсь, это поможет.