[英]Get RAW Bayer pixel data from CVPixelBufferRef
我正在使用AVCaptureSession
和AVCapturePhotoOutput
以kCVPixelFormatType_14Bayer_RGGB
格式捕獲來自設備相機的RAW照片數據。
我已經在AVCapturePhotoCaptureDelegate
回調中獲得了原始照片樣本緩沖區:
func capture(captureOutput: AVCapturePhotoOutput,
didFinishProcessingRawPhotoSampleBuffer rawSampleBuffer: CMSampleBuffer?,
previewPhotoSampleBuffer: CMSampleBuffer?,
resolvedSettings: AVCaptureResolvedPhotoSettings,
bracketSettings: AVCaptureBracketedStillImageSettings?,
error: Error?) {
guard let rawSampleBuffer = rawSampleBuffer else { return }
guard let pixelBuffer = CMSampleBufferGetImageBuffer(rawSampleBuffer) else { return }
}
我現在正嘗試遵循此問題的答案,以從CVPixelBufferRef
獲取像素值,但是當使用答案中提到的14位Bayer RGGB像素格式而不是32位RGB格式時,我CVPixelBufferRef
如何做到這一點。
首先,您需要找出緩沖區的“像素格式類型”。 這是通過CVPixelBufferGetPixelFormatType函數完成的。
可用類型在此處列出。 在你的情況下,我猜kCVPixelFormatType_14Bayer_BGGR
。
然后,您需要知道如何存儲數據。 根據什么是iOS中的CVPixelBuffer? 它是
“以16位打包的Bayer 14位Little-Endian,訂購了RGR G ...與GBG B交替使用。”
然后,以與在Swift中從CVPixelBufferRef獲取像素值中為Uint8
提取Uint16
相同的方式提取像素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.