我正在尝试使用 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
在这种情况下,宽度值仍然不正确。
关于如何准确获得宽度的任何想法?