1 回答

TA貢獻1830條經驗 獲得超9個贊
ARCore 新的Augmented Faces API用于不帶深度傳感器的前置攝像頭,提供高質量的
468-point
3D 標準網格,允許用戶將動畫蒙版、眼鏡、皮膚修飾等效果附加到他們的臉上。網格提供坐標和區域特定的錨點,可以添加這些效果。
我堅信在 ARCore 1.7 的引擎蓋下借助計算機視覺算法生成面部標志檢測。同樣重要的是,您可以通過創建啟用“前置攝像頭”和增強面“網格”模式的 ARCore 會話來開始使用 Unity 或 Sceneform。請注意,使用前置攝像頭時,平面檢測等其他 AR 功能目前不可用。AugmentedFace
extends Trackable
,因此可以像平面、增強圖像和其他 Trackable 一樣檢測和更新人臉。
如您所知,2 多年前,Google 發布
Face API
了執行面部檢測的功能,該功能可在圖片中定位人臉,以及他們的位置(他們在圖片中的位置)和方向(他們面對的方向,相對于相機)。人臉 API 允許您檢測地標(臉上的興趣點)并執行分類以確定眼睛是睜著還是閉著,以及臉部是否在微笑。人臉 API 還檢測和跟蹤運動圖像中的人臉,這稱為人臉跟蹤。
因此,ARCore 1.7 只是從 Face API 中借用了一些架構元素,現在它不僅可以檢測面部地標并為其生成 468 個點,還可以以 60 fps 的速度實時跟蹤它們并將 3D 面部幾何圖形粘貼到它們上。
請參閱 Google 的人臉檢測概念概述。
計算由移動 RGB 相機拍攝的視頻中的深度通道并不是一門火箭科學。您只需將視差公式應用于跟蹤的特征。因此,如果靜態對象上特征的平移幅度非常高——被跟蹤對象更靠近相機,而如果靜態對象上特征的幅度非常低——被跟蹤對象離相機更遠。十多年來,這些計算深度通道的方法對于The Foundry NUKE和Blackmagic Fusion等合成應用程序來說非常常見。現在,在 ARCore 中可以使用相同的原理。
您不能拒絕對自定義對象或身體的其他部位(如手)進行人臉檢測/跟蹤算法。僅針對面孔開發的增強面孔 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);
// .......
}
添加回答
舉報