1

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

将 YUV 420Yp8_Cb8_Cr8 格式图像转换为 ARGB8888 格式图像。

这似乎非常适合我的用例。但我无法弄清楚如何获得论点srcYpsrcCb并且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

任何帮助都深表感谢。

4

1 回答 1

0

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

我找到了这个关于如何将像素缓冲区平面转换为vImage_Buffers并将它们传递给函数的示例。也许它有帮助。

于 2021-06-26T12:01:25.950 回答