我试图找到现实世界中iOS设备的前置摄像头和用户面部之间的距离。
到目前为止,我已经尝试过ARKit/SceneKit
,并且使用ARFaceAnchor
能够检测用户与相机的面部距离;但它只能在近距离(约88厘米)内工作。我的应用程序需要检测到200 cms的面部距离。
我假设无需使用trueDepth数据(ARFaceAnchor
中正在使用的数据)就可以实现这一目标。
你能给我正确的方向吗?
答案 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?