我有一个 AR 应用程序,其中视图不断显示后置摄像头看到的内容,并将每一帧发送到 VisionRequest 进行分析。
识别出对象后,我想捕获特定的最后一帧并将其保存为常规帧,并将UIImage
其沿 segue 链发送到显示最后一帧的最终视图控制器。我在捕捉最后一帧并显示它时遇到问题。
这是我到目前为止所尝试的:
当图像以足够高的可信度被识别时,我尝试从 中检索当前的最后一帧CVPixelBuffer
并将其保存在一个局部变量中,该变量稍后会在一个 segue 中传递给后续视图控制器。
这是正确的做法吗?还是我必须向会话添加第二个输出(除了视频数据输出之外的照片输出)?
//attempting to get the current last frame of captured video
let attachments = CMCopyDictionaryOfAttachments(allocator: kCFAllocatorDefault, target: self.currentlyAnalyzedPixelBuffer!, attachmentMode: kCMAttachmentMode_ShouldPropagate)
let ciImage = CIImage(cvImageBuffer: self.currentlyAnalyzedPixelBuffer!, options: attachments as? [CIImageOption : Any])
self.image = UIImage(ciImage: ciImage)