我正在开发一个应用程序,需要使用iPhone的前置摄像头来使用swift进行增强现实体验。我尝试过使用ARKit,但是ARKit制作的前置摄像头仅支持iPhone X。
那么,除了 ARKit 之外,我可以使用哪些框架或库来快速开发具有 AR 体验的应用程序,尤其是前置摄像头的应用程序?
ARKit 并不是在 iOS 上创建“AR”体验的唯一方法,也不是 Apple 允许在 App Store 中创建“AR”体验的唯一方法。
如果您将“前置摄像头 AR”定义为“使用前置摄像头,检测面部,允许放置虚拟 2D/3D 内容叠加层,使其看起来与面部保持附着”,那么人们可以使用多种技术。自从 ARKit 出现之前,像 Snapchat 这样的应用程序就一直在做这种“AR”,使用的是他们内部开发的技术或第三方授权的技术。您如何做到这一点以及它的效果如何取决于您使用的技术。 ARKit 通过需要前置深度摄像头来保证一定的结果精度。
完全有可能开发一款使用 ARKit 在 TrueDepth 设备上进行面部跟踪的应用程序,并在其他设备上使用不同的技术。例如,仅考虑使用 Apple SDK 可以“开箱即用”执行的操作,有 Vision 框架,它可以在 2D 中定位和跟踪面部。可能也有一些第三方图书馆......或者您可以查阅学术期刊,因为面部检测/跟踪是计算机视觉研究的一个非常活跃的领域。
iPhone 的 TrueDepth 前置摄像头(型号从 X 到 15)为您提供 60 fps 帧速率的深度通道,图像前置摄像头也为您提供 60 fps 的 RGB 通道。
工作原理:TrueDepth 传感器类似于 MS Xbox Kinect 中的深度传感系统,但功能更强大。红外发射器将 30,000 个点的图案投射到用户的脸上。然后用专用的红外相机拍摄这些点以进行分析。有一个接近传感器,大概是为了让系统知道用户何时足够接近可以激活。环境光传感器帮助系统设置输出光级别。
如果您的设备中没有 TrueDepth 传感器(iPhone SE、iPhone 6s、iPhone 7 和 iPhone 8 没有),您将无法使用
Animoji
、Face ID
或 Depth Occlusion Effects
等功能。
在 iOS 版 ARKit 中,使用 TrueDepth 相机跟踪用户面部运动和表情的配置运行
ARFaceTrackingConfiguration
类的对象。 ARKit 允许您同时使用后置摄像头跟踪周围环境并借助前置摄像头跟踪您的脸部 - 您一次最多可以跟踪 3 个脸部。
以下是如何设置 AR 配置的两种场景。
let configuration = ARWorldTrackingConfiguration()
if configuration.supportsUserFaceTracking {
configuration.userFaceTrackingEnabled = true
}
session.run(configuration)
func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
for anchor in anchors where anchor is ARFaceAnchor {
// you code here...
}
}
let configuration = ARFaceTrackingConfiguration()
if configuration.supportsWorldTracking {
configuration.worldTrackingEnabled = true
}
session.run(configuration)
func session(_ session: ARSession, didUpdate frame: ARFrame) {
let transform = frame.camera.transform
// you code here...
}