如何在没有视图子层的情况下运行 CoreML 模型的请求?
Posted
技术标签:
【中文标题】如何在没有视图子层的情况下运行 CoreML 模型的请求?【英文标题】:How do I run a CoreML model's request without having the view sublayer? 【发布时间】:2020-11-01 10:59:21 【问题描述】:除非我有这些行,否则我的回调似乎不会运行:
let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
view.layer.addSublayer(previewLayer)
previewLayer.frame = view.frame
即使看起来回调会响应:
let dataOutput = AVCaptureVideoDataOutput()
dataOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue"))
captureSession.addOutput(dataOutput)
这是回调函数的声明:
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection)
【问题讨论】:
【参考方案1】:想通了;您需要两个 DispatchQueue,一个用于配置和启动 CaptureSession
,另一个用于运行 CaptureSession
。
sessionQueue.async [unowned self] in
self.configureSession()
self.captureSession.startRunning()
和
let dataOutput = AVCaptureVideoDataOutput()
dataOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue"))
captureSession.addOutput(dataOutput)
请务必查看此Medium Post(并阅读第二条评论,因为部分代码已过时)
【讨论】:
以上是关于如何在没有视图子层的情况下运行 CoreML 模型的请求?的主要内容,如果未能解决你的问题,请参考以下文章
CoreML 图像模型只识别给定的数据集,如何包含外部数据?