带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
}`