首页 > 解决方案 > 增强面给出了不正确的坐标

问题描述

我正在编写应用程序来计算人眼距离。我正在使用google augumented faces api。这个库很好地将图像放在脸上。但它的坐标精度非常低。问题是 - 当我通过眼睛坐标计算距离时,它会根据面部位置而变化。

您可以观看此视频以了解我在说什么。例如,当我张开嘴时距离变小了)))。或者对于娃娃脸来说它可以更大——比我的小。

这是计算眼睛距离的方法。我得到了这篇文章中描述的坐标

private fun calculateEyeDistance(face: AugmentedFace): Float {    
        val buffer = face.meshVertices
        val leftEyePosition = Vector3(buffer.get(374 * 3),
                buffer.get(374 * 3 + 1),
                buffer.get(374 * 3 + 2))

        val rightEyePosition = Vector3(buffer.get(145 * 3),
                buffer.get(145 * 3 + 1),
                buffer.get(145 * 3 + 2))
        
        return distanceInSM(leftEyePosition, rightEyePosition)
}
    private fun distanceInSM (p1: Vector3, p2: Vector3): Float {
        val distanceInMeter = sqrt((p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y) + (p1.z-p2.z)*(p1.z-p2.z))
        return round(distanceInMeter * 10000) / 100
    }

是否有可能获得准确的眼距?我尝试启用 ARCore Depth API,但结果是一样的。

标签: androidarcore

解决方案


推荐阅读