2017-08-17 1 views
2

verfolge ich ein Tutorial auf Youtube über CoreML: Echtzeit-Kamera Objekterkennung mit maschinellem Lernen - Swift 4 von Herrn BrianGeben Sie 'String!' kein Mitglied ‚Foto‘ hat

captureSession.sessionPreset = .photo 

In dieser Zeile, sagt der Fehler:

Typ "String" hat kein Mitglied 'Foto'.

dataOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue")) 

Und ein anderer Fehler ist der 'Selbst' Teil. Der Fehler lautet:

Wert des Typs 'ViewController' kann nicht in den erwarteten Argumenttyp 'AVCaptureVideoDataOutputSampleBufferDelegate!' Konvertiert werden.

Unten ist der gesamte Code:

import UIKit 
import AVFoundation 
import AVKit 
import Vision 

class ViewController: UIViewController,   AVCaptureAudioDataOutputSampleBufferDelegate { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     // here is where we start up the camera 
     let captureSession = AVCaptureSession() 
     captureSession.sessionPreset = .photo 

     guard let captureDevice = 
      AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) else { return } 

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

     captureSession.startRunning() 

     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) 
+0

Ändern Sie 'AVCaptureAudioDataOutputSampleBufferDelegate' in' AVCaptureVideoDataOutputSampleBufferDelegate'. – rmaddy

+0

Danke. Es funktioniert jetzt. Wie wäre es mit dem ersten Fehler? – Harry

+0

Beginnen Sie mit der Dokumentation der Eigenschaft 'sessionPreset' von' AVCaptureSession'. – rmaddy

Antwort

0

Ich denke, Ihnen die Antwort für die zweite Fehlermeldung anzeigt, für den ersten Fehler mit der Fehlerzeile ersetzen unten

SWIFT 3

captureSession.sessionPreset = AVCaptureSessionPresetPhoto 

SWIFT 4

captureSession.sessionPreset = AVCaptureSession.Preset.photo 
+0

Bitte wechseln Sie zwischen den beiden Zeilen in Ihrer Antwort, swift 4 ist die obige – JAHelia

Verwandte Themen