簡體   English   中英

從CVPixelBufferRef獲取RAW Bayer像素數據

[英]Get RAW Bayer pixel data from CVPixelBufferRef

我正在使用AVCaptureSessionAVCapturePhotoOutputkCVPixelFormatType_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM