tab - ios status bar



iOSデバイスカメラとユーザーの顔の間の距離を探す (1)

iOSデバイスの正面カメラとユーザーの顔との間の距離を実世界で見つけようとしています。

これまでのところ、私はARKit/SceneKitを試してみARKit/SceneKit 、そしてARFaceAnchorを使って、私はカメラからのユーザーの顔の距離を検出することができます。 しかしそれはごく接近している場合にのみ機能します(最大約88 cm)。 私のアプリケーションでは、最大200 cmの顔距離検出が必要です。

これはtrueDepthデータ(ARFaceAnchorで使用されてARFaceAnchor )を使用しなくても達成できると思います。

あなたは私を正しい方向に向けることができますか?


デバイスとユーザーの顔の間の距離を取得するには、検出されたユーザーの顔の位置をカメラの座標系に変換する必要があります。 これを行うには、 convertPositionメソッドを使用して、座標空間を顔座標空間からカメラ座標空間に切り替える必要があります。

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

theFaceNodeは、ユーザーの顔を表すARKitによって作成されたSCNNodeです。 ARSCNViewのpointOfViewプロパティは、シーンの表示元のノード、基本的にはカメラを返します。

pointInFaceCoordinateSpaceは、フェイスメッシュの任意の頂点、または単にFaceNodeの位置(フェイス座標系の原点)にすることができます。 ここで、positionInCameraSpaceはSCNVector3で、カメラ座標空間における、与えた点の位置を表します。 それから、このSCNVector3のx、y、zの値を使って、ポイントとカメラの間の距離を得ることができます(メートルで表示)。

これらはあなたを助けるかもしれないいくつかのリンクです:

- ARKitを使った顔とカメラ間の距離

- github.com/evermeer/EVFaceTracker

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

- iOSのARKitを使ってデバイスの顔からの距離を測定する方法