gpt4 book ai didi

iOS11 ARKit : Can ARKit also capture the Texture of the user's face?

转载 作者:可可西里 更新时间:2023-11-01 05:07:24 26 4
gpt4 key购买 nike

我上下阅读了所有 ARKit 类的完整文档。我没有看到任何描述实际获取用户面部纹理的能力的地方。

ARFaceAnchor 包含 ARFaceGeometry(由顶点组成的拓扑和几何)和 BlendShapeLocation 数组(坐标允许通过在用户面部顶点上操纵几何数学来操纵个人面部特征)。

但是我在哪里可以获得用户面部的实际纹理。例如:实际肤色/颜色/质地、面部毛发、其他独特特征,如疤痕或胎记?或者这根本不可能?

最佳答案

你想要一张纹理贴图样式的面部图像吗?没有 API 可以让您完全做到这一点,但您需要的所有信息都在那里:

  • ARFrame.capturedImage 获取相机图像。
  • ARFaceGeometry 为您提供脸部的 3D 网格。
  • ARAnchorARCamera 共同告诉您人脸相对于相机的位置,以及相机如何与图像像素相关。

因此完全可以使用当前视频帧图像对人脸模型进行纹理处理。对于网格中的每个顶点...

  1. 将顶点位置从模型空间转换到相机空间(使用 anchor 的变换)
  2. 将相机投影与该向量相乘以获得归一化图像坐标
  3. 除以图像宽度/高度得到像素坐标

这将为您获取每个顶点的纹理坐标,然后您可以使用它来使用相机图像对网格进行纹理处理。您可以一次全部执行此数学运算以替换 ARFaceGeometry 提供的纹理坐标缓冲区,或者在渲染期间在 GPU 上的着色器代码中执行此操作。 (如果您使用 SceneKit/ARSCNView 进行渲染,您可能可以在 geometry 入口点的着色器修改器中执行此操作。)

相反,如果您想知道相机图像中的每个像素对应于面部几何形状的哪一部分,那就有点难了。你不能仅仅反转上面的数学,因为你缺少每个像素的深度值......但是如果你不需要映射每个像素,SceneKit HitTest 是获取单个像素几何的简单方法。


如果您实际要求的是地标识别——例如相机图像中有眼睛、 Nose 、 mustache 等的位置——ARKit 中没有为此提供的 API。 Vision框架可能会有所帮助。

关于iOS11 ARKit : Can ARKit also capture the Texture of the user's face?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47225280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com