gpt4 book ai didi

ios - ARFrame.capturedImage CVPixelBufferRef 到 OpenCv Mat 的实时转换

转载 作者:行者123 更新时间:2023-11-28 18:49:22 28 4
gpt4 key购买 nike

ARKit 以 60 帧/秒的速度运行,相当于每帧 16.6 毫秒。

我当前将 CVPixelBufferRef(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange 格式)转换为 cv::Mat (YCrCb) 的代码在 30 毫秒内运行,这导致 ARKit 停滞并且一切都滞后。

有没有人知道如何更快地转换或我是否需要降低帧速率?

有一个suggestion by Apple to use Metal ,但我不确定该怎么做。

我也可以只获取灰度平面,这是第一个 channel ,运行时间 <1 毫秒,但理想情况下我还需要颜色信息。

最佳答案

为了使用 Metal 处理像素缓冲区中的图像,您需要执行以下操作。

  1. 调用 CVMetalTextureCacheCreateTextureFromImage 在像素缓冲区顶部创建 CVMetalTexture 对象。
  2. 调用 CVMetalTextureGetTexture 创建一个 MTLTexture 对象,Metal 代码 (GPU) 可以读取和写入该对象。
  3. 编写一些 Metal 代码来转换颜色格式。

我有一个开源项目 ( https://github.com/snakajima/vs-metal ),它使用 Metal 处理像素缓冲区(来自相机,而不是 ARKit)。随意复制此项目中的任何代码。

关于ios - ARFrame.capturedImage CVPixelBufferRef 到 OpenCv Mat 的实时转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44924904/

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