kCVPixelFormatType_420YpCbCrBiPlanarVideoRange 到 kCVPixelFormatType_32BGRA 的转换

Conversion of kCVPixelFormatType_420YpCbCrBiPlanarVideoRange to kCVPixelFormatType_32BGRA

在我正在开发的 iOS 应用程序中,图像是在 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange 中捕获的(将通过网络发送),但稍后在应用程序中我希望将其转换为 kCVPixelFormatType_32BGRA(用于深度学习推理)。 我无法正确执行此转换。我在苹果文档中找到了一些帮助@ vImageConvert_420Yp8_Cb8_Cr8ToARGB8888(::::::::);这是一个

的函数

Converts a YUV 420Yp8_Cb8_Cr8 format image to an ARGB8888 format image.

这似乎非常适合我的用例。但我无法弄清楚如何获取参数 srcYpsrcCbsrcCr。函数定义为:

func vImageConvert_420Yp8_Cb8_Cr8ToARGB8888(_ srcYp: UnsafePointer<vImage_Buffer>, 
                                      _ srcCb: UnsafePointer<vImage_Buffer>, 
                                      _ srcCr: UnsafePointer<vImage_Buffer>, 
                                      _ dest: UnsafePointer<vImage_Buffer>, 
                                      _ info: UnsafePointer<vImage_YpCbCrToARGB>, 
                                      _ permuteMap: UnsafePointer<UInt8>!, 
                                      _ alpha: UInt8, 
                                      _ flags: vImage_Flags) -> vImage_Error

非常感谢任何帮助。

我认为你需要 vImageConvert_420Yp8_CbCr8ToARGB8888 因为色度值在一个平面上,而不是两个。

我发现 this example 如何将像素缓冲平面转换为 vImage_Buffers 并将它们传递给函数。也许有帮助。