代码之家  ›  专栏  ›  技术社区  ›  Kashif Richard Brightwell

查找iOS设备摄像头和用户面部之间的距离

  •  13
  • Kashif Richard Brightwell  · 技术社区  · 7 年前

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

    到目前为止,我已经试过了 ARKit/SceneKit ,并使用 ARFaceAnchor 我能够检测到用户的脸与摄像机的距离;但它只能在距离很近的地方工作(高达88厘米)。我的应用程序需要人脸距离检测高达200厘米。

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

    你能告诉我正确的方向吗?

    1 回复  |  直到 7 年前
        1
  •  8
  •   YD-    7 年前

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

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

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

    pointInFaceCoordinateSpace可以是面网格的任何顶点,也可以是面节点的位置(面坐标系的原点)。在这里,positionInCameraSpace是一个SConvert3,代表您给定的点在相机坐标空间中的位置。然后,您可以使用此SCN变换器3的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?