我是一名IT专业学生,并且想进一步了解(了解)ARCore中的Augmented Faces API。
我刚刚看到了ARCore V1.7 release和新的Augmented Faces API。我得到了这个API的巨大潜力。但是我没有看到关于此主题的任何问题或文章。所以我在问自己,这里有一些关于此版本的假设/问题。
因此,如果您对此主题有任何建议或意见,请与我们分享!
答案 0 :(得分:5)
- ARCore的新 Augmented Faces API (可在不带深度传感器的前置摄像头上运行)提供高质量的
468-point
3D网格,允许用户将此类效果附加到其面部例如动画蒙版,眼镜,皮肤修饰等。网格提供了坐标和区域特定的锚点,从而可以添加这些效果。我坚信,在ARCore 1.7的支持下,借助计算机视觉算法可以生成面部标志。同样重要的是,您可以通过在启用了“前置摄像头”和“增强人脸”“网格”模式的情况下创建ARCore会话来开始使用Unity或Sceneform。请注意,使用前置摄像头时,其他AR功能(例如平面检测)目前不可用。
AugmentedFace
扩展了Trackable
,因此可以像检测平面,增强图像和其他可跟踪对象一样检测和更新人脸。
您知道,两年多前Google发布了
Face API
来执行面部检测,该功能可以定位图片中的面部及其位置(在图片中的位置)和方向(朝向的方式) ,相对于相机而言)。使用Face API,您可以检测地标(面部的兴趣点)并执行分类,以确定眼睛是睁开还是闭着,以及面部是否在微笑。 Face API还可以检测并跟踪运动图像中的面部,这称为面部跟踪。
因此,ARCore 1.7刚刚从Face API借用了一些建筑元素,现在它不仅可以检测面部标志,并为其生成468点,还可以60 fps的速度实时跟踪它们。保持3D面部几何形状不变。
请参阅Google的Face Detection Concepts Overview。
要计算通过移动RGB相机拍摄的视频中的深度通道不是火箭科学。您只需将视差公式应用于跟踪的要素。因此,如果静态对象上的特征的平移幅度很高-跟踪的对象离摄像机更近,并且静态对象上的特征的幅度很低-跟踪的对象离摄像机更远。对于诸如The Foundry NUKE和Blackmagic Fusion之类的合成应用程序来说,这些计算深度通道的方法已经使用了10多年。现在,可以在ARCore中访问相同的原理。
您不能将人脸检测/跟踪算法拒绝到自定义对象或手之类的身体其他部位。 Augmented Faces API (增强的Faces API),仅用于面孔。
以下是用于激活增强面部功能的Java代码的样子:
// Create ARCore session that supports Augmented Faces
public Session createAugmentedFacesSession(Activity activity) throws
UnavailableException {
// Use selfie camera
Session session = new Session(activity,
EnumSet.of(Session.Feature.FRONT_CAMERA));
// Enabling Augmented Faces
Config config = session.getConfig();
config.setAugmentedFaceMode(Config.AugmentedFaceMode.MESH3D);
session.configure(config);
return session;
}
然后获取检测到的面部列表:
Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);
最后渲染效果:
for (AugmentedFace face : faceList) {
// Create a face node and add it to the scene.
AugmentedFaceNode faceNode = new AugmentedFaceNode(face);
faceNode.setParent(scene);
// Overlay the 3D assets on the face
faceNode.setFaceRegionsRenderable(faceRegionsRenderable);
// Overlay a texture on the face
faceNode.setFaceMeshTexture(faceMeshTexture);
// .......
}
希望这会有所帮助。