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.
这似乎非常适合我的用例。但我无法弄清楚如何获取参数 srcYp
、srcCb
和 srcCr
。函数定义为:
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
并将它们传递给函数。也许有帮助。
在我正在开发的 iOS 应用程序中,图像是在 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
中捕获的(将通过网络发送),但稍后在应用程序中我希望将其转换为 kCVPixelFormatType_32BGRA
(用于深度学习推理)。
我无法正确执行此转换。我在苹果文档中找到了一些帮助@ vImageConvert_420Yp8_Cb8_Cr8ToARGB8888(::::::::);这是一个
Converts a YUV 420Yp8_Cb8_Cr8 format image to an ARGB8888 format image.
这似乎非常适合我的用例。但我无法弄清楚如何获取参数 srcYp
、srcCb
和 srcCr
。函数定义为:
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
并将它们传递给函数。也许有帮助。