【问题标题】:Conversion of kCVPixelFormatType_420YpCbCrBiPlanarVideoRange to kCVPixelFormatType_32BGRAkCVPixelFormatType_420YpCbCrBiPlanarVideoRange 到 kCVPixelFormatType_32BGRA 的转换
【发布时间】:2021-09-09 08:29:14
【问题描述】:

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

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

这似乎非常适合我的用例。但我无法弄清楚如何获取参数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

非常感谢任何帮助。

【问题讨论】:

    标签: ios swift image-processing metal accelerate


    【解决方案1】:

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

    我找到了this example,了解如何将像素缓冲区平面转换为vImage_Buffers 并将它们传递给函数。也许有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 2021-01-30
      • 2021-11-20
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      相关资源
      最近更新 更多