查找iOS设备相机和用户脸部之间的距离

Kas*_*hif 13 ios scenekit swift arkit

我试图在现实世界中找到iOS设备的前置摄像头和用户脸部之间的距离.

到目前为止,我已经尝试过ARKit/SceneKit,并且使用ARFaceAnchor我能够检测用户与相机的面部距离; 但它只能靠近(最大约88厘米).我的应用要求面部距离检测高达200厘米.

我假设这可以在不使用trueDepth数据(正在使用ARFaceAnchor)的情况下实现.

你能把我放在正确的方向吗?

YD-*_*YD- 6

为了获得设备和用户脸部之间的距离,您应该将检测到的用户脸部的位置转换为摄像机的坐标系.为此,您必须使用SceneKit中的convertPosition方法来切换坐标空间,从面部坐标空间切换到摄像机坐标空间.

let positionInCameraSpace = theFaceNode.convertPosition(pointInFaceCoordinateSpace, to: yourARSceneView.pointOfView)
Run Code Online (Sandbox Code Playgroud)

theFaceNode是由ARKit创建的SCNNode,代表用户的面部.ARSCNView的pointOfView属性返回查看场景的节点,基本上是相机.

pointInFaceCoordinateSpace可以是面网格的任何顶点,也可以是面部节点的位置(面部坐标系的原点).这里,positionInCameraSpace是一个SCNVector3,表示你在相机坐标空间中给出的点的位置.然后,您可以使用此SCNVector3的x,y和z值(以米为单位)获取点与相机之间的距离.

这些链接可以帮助您:

- 使用ARKit在面部和相机之间的距离

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

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

- 如何在iOS中借助ARKit测量设备距离?