Как измерить ширину лица по данным лица ARKit?

Я пытаюсь измерить ширину лица человека с помощью ARKit.

ARKit предоставляет ARSCNFaceGeometry со свойством ограничивающей рамки. Упоминается, что ограничивающая рамка находится в локальном координатном пространстве. Насколько я понимаю, если я могу получить ширину ограничивающей рамки вокруг сетки лица, она должна равняться ширине лица.

      func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
        guard let faceAnchor = anchor as? ARFaceAnchor, 
              let faceGeometry = node.geometry as? ARSCNFaceGeometry else {return}

        faceGeometry.update(from: faceAnchor.geometry)

        let width = faceGeometry.boundingBox.max.x - faceGeometry.boundingBox.min.x
        print(width)
}

Когда я использовал это, я чувствовал, что получил ширину лица, но по какой-то причине значение номинала никогда не меняется, даже если я обнаруживаю разные лица.

Я также попытался преобразовать координаты из локального пространства в мировое пространство с помощью

              let (localMin, localMax) = faceGeometry.boundingBox
        
        let min = node.convertPosition(localMin, to: nil)
        let max = node.convertPosition(localMax, to: nil)
        let width = max.x - min.x

В этом случае значение ширины по-прежнему неверно.

Любые мысли о том, как точно получить ширину?

0 ответов

Другие вопросы по тегам