查找iOS设备相机与用户面部之间的距离

时间:2018-10-26 01:44:18

标签: ios swift scenekit arkit

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

到目前为止,我已经尝试过ARKit/SceneKit,并且使用ARFaceAnchor能够检测用户与相机的面部距离;但它只能在近距离(约88厘米)内工作。我的应用程序需要检测到200 cms的面部距离。

我假设无需使用trueDepth数据(ARFaceAnchor中正在使用的数据)就可以实现这一目标。

你能给我正确的方向吗?

1 个答案:

答案 0 :(得分:6)

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

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

theFaceNode是ARKit创建的SCNNode,代表用户的脸部。 ARSCNView的pointOfView属性返回从中查看场景的节点,基本上是摄像机。

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

这些链接可能会对您有所帮助:

-Distance between face and camera using ARKit

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

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

-How to measure device distance from face with help of ARKit in iOS?