如何从 ARKit 人脸数据中测量人脸宽度?

时间:2021-03-04 01:15:53

标签: ios arkit arfacegeometry

我正在尝试使用 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 个答案:

没有答案