Найдите расстояние между камерой устройства ios и лицом пользователя

Я пытаюсь найти расстояние между фронтальной камерой устройства iOS и лицом пользователя в реальном мире.

До сих пор я пробовал ARKit/SceneKit, и с помощью ARFaceAnchor я могу определять расстояние лица пользователя от камеры; но работает только в непосредственной близости (примерно до 88 см). Мое приложение требует обнаружения лица на расстоянии до 200 см.

Я предполагаю, что этого можно было бы достичь без использования данных trueDepth (которые используются в ARFaceAnchor).

Можете ли вы направить меня в правильном направлении?

Пожалуйста, проверьте это: - github.com/evermeer/EVFaceTracker

VDPurohit 26.10.2018 08:14

Интересно узнать об ограничении ARFaceAnchor на 88 см! Я бы предложил использовать VNDetectFaceRectanglesRequest для обнаружения лиц и VNTrackObjectRequest для их отслеживания при необходимости. Хотя не уверен, что они будут лучше выступать на больших дистанциях.

Maxim Volgin 26.10.2018 13:41

Вы правы, это можно сделать без данных trueDepth. Я не видел, чтобы приложения делали то же самое с задней камерой. Я тоже искал то же самое, но не смог удачи вам !!

Prashant Tukadiya 19.11.2018 05:41
13
3
2 947
1

Ответы 1

Чтобы получить расстояние между устройством и лицом пользователя, необходимо преобразовать положение обнаруженного лица пользователя в систему координат камеры. Для этого вам нужно будет использовать метод convertPosition из SceneKit для переключения координатного пространства с координатного пространства лица на координатное пространство камеры.

let positionInCameraSpace = theFaceNode.convertPosition(pointInFaceCoordinateSpace, to: yourARSceneView.pointOfView)

theFaceNode - это SCNNode, созданный ARKit, представляющий лицо пользователя. Свойство pointOfView вашего ARSCNView возвращает узел, с которого просматривается сцена, в основном камера.

pointInFaceCoordinateSpace может быть любыми вершинами сетки лица или просто положением узла FaceNode (который является началом системы координат лица). Здесь positionInCameraSpace - это SCNVector3, представляющий положение заданной вами точки в пространстве координат камеры. Затем вы можете получить расстояние между точкой и камерой, используя значения x, y и z этого SCNVector3 (выраженные в метрах).

Вот несколько ссылок, которые могут вам помочь:

-Расстояние между лицом и камерой с помощью ARKit

-https://github.com/evermeer/EVFaceTracker

-https://developer.apple.com/documentation/arkit/arfacetrackingconfiguration

-Как измерить расстояние от устройства до лица с помощью ARKit в iOS?

Присуждение награды, поскольку сообщество, кажется, думает, что это ответ. Однако сейчас я занят другим проектом. Как только я вернусь, я подтвердю ответ.

Kashif 23.11.2018 13:57

Другие вопросы по теме