gpt4 book ai didi

ios - 从 CVPixelBufferRef 获取 RAW Bayer 像素数据

转载 作者:行者123 更新时间:2023-12-02 12:10:12 24 4
gpt4 key购买 nike

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

我现在尝试按照 this question 的答案从 CVPixelBufferRef 获取像素值,但我无法弄清楚在使用 14 位 Bayer RGGB 像素格式(而不是 32 位)时如何执行此操作答案中提到的位 RGB 格式。

最佳答案

首先您需要找出缓冲区的“像素格式类型”。这是通过 CVPixelBufferGetPixelFormatType 函数完成的。

here 列出了可用类型。在你的情况下,我猜测kCVPixelFormatType_14Bayer_BGGR

那么你需要知道数据是如何存储的。根据 What is a CVPixelBuffer in iOS? 的说法是

"Bayer 14-bit Little-Endian, packed in 16-bits, ordered R G R G... alternating with G B G B..."

然后,您以与 Get pixel value from CVPixelBufferRef in Swift 中的 Uint8 相同的方式提取 Uint16 的像素。

关于ios - 从 CVPixelBufferRef 获取 RAW Bayer 像素数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44185411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com