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



我试图在现实世界中寻找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测量设备与面部的距离?

最新更新