我使用ARKit的脸地标位置和视觉套件框架的手的姿势。当用户单击ARKit按钮时,我能够成功地打开相机,并且能够切换到visionKit框架。但问题是,在相机之间切换的速度很慢。
相关私有变量cameraFeedSession: AVCaptureSession?
func setUpFaceDetection() {
DispatchQueue.main.async {
self.cameraFeedSession?.stopRunning()
}
let configuration = ARFaceTrackingConfiguration()
sceneView.isHidden = false
sceneView.session.run(configuration)
}
func setUpHandPoseCamera() {
self.index = 0
alertLabel.text = "Please wait..."
do {
if cameraFeedSession == nil {
cameraView.previewLayer.videoGravity = .resizeAspectFill
try setupAVSession()
cameraView.previewLayer.session = cameraFeedSession
}
cameraFeedSession?.startRunning()
if let canAdd = cameraFeedSession?.canAddOutput(cameraOutput), canAdd {
cameraFeedSession?.addOutput(cameraOutput)
}
cameraView.imageLayer.removeFromSuperlayer()
} catch {
AppError.display(error, inViewController: self)
}
}
func disableFaceDetection() {
sceneView.isHidden = true
sceneView.session.pause()
}发布于 2022-08-05 21:15:00
我很肯定您不能这样做,在幕后,ARKit正在运行它自己的AVCaptureSession实例,并且您没有直接访问它的权限--多个AVCaptureSession也不能同时运行。与停止/启动AVCaptureSession相关的硬件激活成本。
您为什么不能将已经运行的ARKit会话中的视频输出数据作为视觉推理的输入?您可以在ARSession上不间断地禁用跟踪,并通过在ARSession委托方法中或从ARSession.currentFrame中读取ARFrame.capturedImage属性,有效地将其用作纯摄像机。
https://stackoverflow.com/questions/73232442
复制相似问题