1
我正在使用AVCaptureVideoDataOutput通過CGDataProviderCopyData得到了迅速的2.0更新this像素數據和我目前得到fatal error: unexpectedly found nil while unwrapping an Optional value
在線:let data = CGDataProviderCopyData(CGImageGetDataProvider(imageRef)) as! NSData
不能在SWIFT 2
func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
print("Capture output running")
let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
CVPixelBufferLockBaseAddress(imageBuffer!, 0)
let baseAddress = CVPixelBufferGetBaseAddressOfPlane(imageBuffer!, 0)
let bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer!)
let width = CVPixelBufferGetWidth(imageBuffer!)
let height = CVPixelBufferGetHeight(imageBuffer!)
let colorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = UInt32(CGBitmapInfo.ByteOrder32Big.rawValue)
//Original version of above line
//var bitmapInfo = CGBitmapInfo.fromRaw(CGImageAlphaInfo.PremultipliedFirst.toRaw())! | CGBitmapInfo.ByteOrder32Little
let context = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, bitmapInfo)
let imageRef = CGBitmapContextCreateImage(context)
CVPixelBufferUnlockBaseAddress(imageBuffer!, 0)
let data = CGDataProviderCopyData(CGImageGetDataProvider(imageRef)) as! NSData
let pixels = UnsafePointer<UInt8>(data.bytes)
let imageSize : Int = Int(width) * Int(height) * 4
var newPixelArray = [UInt8](count: imageSize, repeatedValue: 0)
for index in 0.stride(to: data.length, by: 4) {
newPixelArray[index] = 255 - pixels[index]
newPixelArray[index + 1] = 255 - pixels[index + 1]
newPixelArray[index + 2] = 255 - pixels[index + 2]
newPixelArray[index + 3] = pixels[index + 3]
print(newPixelArray[index])
}
//remainder of function
}
我想我已經得到了'讓位= ...'行錯了,但我無法弄清楚如何原來顯示的轉換線下方 – Ian
如果我更換線'let bitmapInfo = CGBitmapInfo(rawValue:CGImageAlphaInfo.PremultipliedFirst.rawValue).rawValue | CGBitmapInfo.ByteOrder32Little.rawValue'行'讓數據...'仍然是致命的錯誤,但沒有消息,我只是得到'(lldb)'印好 – Ian