Вызов двух подпредставлений в ViewDidLoad - PullRequest
0 голосов
/ 09 марта 2019

Я новичок в быстром программировании, так что извините за мой язык

Я хотел запустить два метода в одном методе main Один для использования ARKit для создания приложения measure, а под ним - модуль распознавания объектов COREML. При запуске оба работают нормально, однако распознавание объектов работает на одном снимке (я хочу, чтобы это было видео в реальном времени). Когда поток останавливается, модуль обнаружения объектов работает с RT-видео, однако ARKit не работает.

См. Пример кода ниже

override func viewDidLoad() {
    super.viewDidLoad()


  // Set the view's delegate
    sceneView.delegate = self
    // Show statistics such as fps and timing information
    sceneView.showsStatistics = true

    //Background
    measurementLabel.frame = CGRect(x:0 , y:0, width: view.frame.size.width, height:100)
    measurementLabel.backgroundColor = .white

    measurementLabel.text = "0 inches"
    measurementLabel.textAlignment = .center
    sceneView.addSubview(measurementLabel)

    // Sets the amount of taps needed to trigger the handler
    let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap))
    tapRecognizer.numberOfTapsRequired = 1

    // Adds the handler to the scene view
    sceneView.addGestureRecognizer(tapRecognizer)
    //Lock taps after 4 inputs and save to array


    //COREML integration
    //Setting up the camera permissions
    let captureSession = AVCaptureSession()
    // captureSession.sessionPreset = .photo

    guard let captureDevice = AVCaptureDevice.default(for: .video) else {return}

    guard let input = try? AVCaptureDeviceInput(device: captureDevice) else {return}

    captureSession.addInput(input)
    captureSession.startRunning()

    //Vision processing layer
    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)


    //VNImageRequestHandler(cgImage:  , options: [:]).perform(<#T##requests: [VNRequest]##[VNRequest]#>)
    setupIdentifierConfidenceLabel()



}

Мой вопрос к вам в том, что моя ошибка в том, чтобы запустить их оба параллельно. Я знаю, что это очень маленький случай, но я не могу понять это

...