热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS11ARKit:ARKit还可以捕获用户脸部的纹理吗?

如何解决《iOS11ARKit:ARKit还可以捕获用户脸部的纹理吗?》经验,为你挑选了1个好方法。

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

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

但是我在哪里可以获得用户脸部的实际纹理.例如:实际的肤色/肤色/纹理,面部毛发,其他独特的特征,如疤痕或出生痕迹?或者这根本不可能?



1> rickster..:

你想要一个面部的纹理贴图风格的图像?没有API可以帮助您,但您需要的所有信息都在那里:

ARFrame.capturedImage 获取相机图像.

ARFaceGeometry 为您提供面部的3D网格.

ARAnchorARCamera一起告诉您脸部相对于相机的位置,以及相机与图像像素的关系.

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

    将顶点位置从模型空间转换为相机空间(使用锚点的变换)

    与具有该向量的相机投影相乘以获得归一化的图像坐标

    除以图像宽度/高度以获得像素坐标

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

相反,如果你想知道相机图像中每个像素对应的面部几何形状的哪一部分,那就更难了.你不能只是颠倒上面的数学,因为你错过了每个像素的深度值......但如果你不需要映射每个像素,SceneKit命中测试是获取单个像素几何的简单方法.


如果您真正要求的是具有里程碑意义的识别 - 例如,在相机图像中的位置是眼睛,鼻子,胡须等 - 在ARKit中没有API.该愿景框架可能的帮助.


推荐阅读
author-avatar
米米丫头2502860283
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有