如何提升ARKit面部追踪中捕获图像的分辨率?
ARKit人脸特征比对中captureImage分辨率过低的优化困境
在ARKit中使用ARFrame.captureImage生成人脸特征并进行相似度比对时,发现通过capturedDepthData获取到的captureImage分辨率仅为640x480,相比直接使用Vision框架处理的图像,人脸特征比对质量受到显著负面影响。
已尝试的优化方案及遇到的问题
方案1:设置最高分辨率视频格式
尝试通过排序ARFaceTrackingConfiguration.supportedVideoFormats选择分辨率最高的格式进行配置,代码如下:
let configuration = ARFaceTrackingConfiguration() if let videoFormat = ARFaceTrackingConfiguration.supportedVideoFormats.sorted(by: { ($0.imageResolution.width * $0.imageResolution.height) < ($1.imageResolution.width * $1.imageResolution.height) }).last { configuration.videoFormat = videoFormat }
实际效果:captureImage的分辨率并未得到提升。
方案2:使用captureHighResolutionFrame并设置推荐视频格式
尝试配置ARFaceTrackingConfiguration.recommendedVideoFormatForHighResolutionFrameCapturing,代码如下:
if let videoFormat = ARFaceTrackingConfiguration.recommendedVideoFormatForHighResolutionFrameCapturing { configuration.videoFormat = videoFormat }
实际问题:
- 根据官方文档,该方法会异步获取高分辨率帧,导致常规
capturedImage与高分辨率图像频繁切换,需要针对不同尺寸手动调整displayTransform和CGAffineTransform,增加了开发复杂度; - 每秒会产生60次快门音,严重干扰用户使用体验。
寻求可行方案:希望找到既能有效提升captureImage分辨率以保证人脸特征比对质量,又能避免上述方案缺陷的解决办法。
内容的提问来源于stack exchange,提问作者Kevvv
相关产品推荐
相关产品推荐

