2017-08-17 45 views
2

我下面讲CoreML在Youtube上观看教程:实时Camera对象检测与机器学习 - 布莱恩先生键入'String!'没有成员“照片”

captureSession.sessionPreset = .photo 

斯威夫特4在这一行,错误说:

类型“String”没有成员'photo'。

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

而另一个错误是 '自我' 的一部分。错误是:

无法将类型'ViewController'的值转换为期望的参数类型'AVCaptureVideoDataOutputSampleBufferDelegate!'

下面是整个代码:

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

将'AVCaptureAudioDataOutputSampleBufferDelegate'更改为'AVCaptureVideoDataOutputSampleBufferDelegate'。 – rmaddy

+0

谢谢。它现在有效。第一个错误怎么样? – Harry

+0

首先查看'AVCaptureSession'的'sessionPreset'属性的文档。 – rmaddy

回答

0

我觉得你得到了第二个错误的答案,因为第一个错误与替换误差线以下

SWIFT 3

captureSession.sessionPreset = AVCaptureSessionPresetPhoto 

SWIFT 4

captureSession.sessionPreset = AVCaptureSession.Preset.photo 
+0

请在你的答案中切换两行,swift 4是上面的那一行 – JAHelia