Как выполнить запрос модели CoreML без подслоя представления? - PullRequest
0 голосов
/ 12 июля 2020

Кажется, что мой обратный вызов не запускается, если у меня нет этих строк:

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 Ответ

0 голосов
/ 13 июля 2020

разобрался; вам понадобятся два 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)

Убедитесь, что вы проверили это Средний пост (и прочтите второй комментарий, так как часть кода устарела)

...