我试图在现实世界中寻找iOS设备的前置摄像头和用户的脸部之间的距离。
到目前为止,我已经尝试了ARKit/SceneKit
,并使用ARFaceAnchor
我能够检测到用户与相机的面部距离; 但它只能在近距离(最大约88厘米(下工作。我的应用程序需要高达 200 厘米的人脸距离检测。
我假设这可以在没有使用trueDepth数据(ARFaceAnchor
中使用(的情况下实现。
你能把我放在正确的方向上吗?
为了获得设备与用户面部之间的距离,您应该将检测到的用户面部的位置转换为相机的坐标系。为此,您必须使用 SceneKit 中的 convertPosition 方法切换坐标空间,从面坐标空间切换到相机坐标空间。
let positionInCameraSpace = theFaceNode.convertPosition(pointInFaceCoordinateSpace, to: yourARSceneView.pointOfView)
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测量设备与面部的距离?