Найти расстояние между камерой устройства iOS и лицом пользователя - PullRequest
0 голосов
/ 26 октября 2018

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

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

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

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

1 Ответ

0 голосов
/ 19 ноября 2018

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

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

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

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

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

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

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

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

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

...