带AVCaptureSession的Erros到Swift 3中的UIImage

带AVCaptureSession的Erros到Swift 3中的UIImage,swift,avcapturesession,Swift,Avcapturesession,以下是我的设置: let captureSession = AVCaptureSession() captureSession.sessionPreset = AVCaptureSessionPresetPhoto let backCamera = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) do { let input = try AVCaptureDeviceInput(device: backCa

以下是我的设置:

let captureSession = AVCaptureSession()
captureSession.sessionPreset = AVCaptureSessionPresetPhoto

let backCamera = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)

do {
    let input = try AVCaptureDeviceInput(device: backCamera)
    captureSession.addInput(input)
} catch {
    print("can't access camera")
    return
}

let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
self.view.layer.addSublayer(previewLayer!)

let videoOutput = AVCaptureVideoDataOutput()
videoOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "sample buffer delegate", attributes: .concurrent))

captureSession.addOutput(videoOutput)
captureSession.startRunning()

let pixelBuffer = CMSampleBufferGetImageBuffer(CMSampleBuffer)
let cameraImage = CIImage(cvImageBuffer: pixelBuffer!)


let comicEffect = CIFilter(name: "CIComicEffect")

comicEffect!.setValue(cameraImage, forKey: kCIInputImageKey)

let filteredImage = UIImage(ciImage: comicEffect!.value(forKey: kCIOutputImageKey) as! CIImage!)

DispatchQueue.main.async() {
    let image_view = UIImageView(image: filteredImage)
    self.view = image_view
}
我有两个错误。第一个错误与setSampleBufferDelegate()有关:

第二个错误与CMSampleBufferGetImageBuffer()有关:

有人知道我可能做错了什么吗?

第一个错误:

实现
AVCaptureVideoDataOutputSampleBufferDelegate
delegate,它将为当前会话提供
AVCaptureOutput
CMSampleBuffer

class YourClass:AVCaptureVideoDataOutputSampleBufferDelegate{}

public func captureOutput(captureOutput:AVCaptureOutput!、didOutputSampleBuffer sampleBuffer:CMSampleBuffer!、from connection:AVCaptureConnection!){print(“DidDropSampleBuffer”)
//使用此CMSampleBuffer获取图像
}

对于第二个错误, 替换此项:

让pixelBuffer=CMSampleBufferGetImageBuffer(CMSampleBuffer)

与:

`func ciimageFromSampleBuffer(sampleBuffer : CMSampleBuffer) -> CIImage
  { 
    let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
    let cameraImage = CIImage(cvImageBuffer: pixelBuffer!)
    return cameraImage
  }`
这将为您提供
CIImage

Cannot convert value of type '(CMSampleBuffer).Type' (aka 'CMSampleBuffer.Type') to expected argument type 'CMSampleBuffer'
`func ciimageFromSampleBuffer(sampleBuffer : CMSampleBuffer) -> CIImage
  { 
    let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
    let cameraImage = CIImage(cvImageBuffer: pixelBuffer!)
    return cameraImage
  }`