c# - 在将 ARKit 与 Unity 结合使用时访问 iPhone 相机帧,转换 camera.videoparams.cvPixelBuffer

标签 c# ios opencv unity3d arkit

我目前正在尝试创建一个同时使用 OpenCV 和 ARKit 的 Unity 项目。我有 OpenCV 来执行一些我不想直接通过 ARKit 执行的轻量级特征识别。我让 ARKit 应用程序和 OpenCV 应用程序分开工作;但是,当一起使用时,ARKit 会抓取相机,我还没有想出如何将 ARKit 帧数据获取到 OpenCV 以进行我计划的特征识别。

我目前的目标是使用 ARFrameUpdated 方法通过管道传输 ARKit 帧数据,如下所示:

public void ARFrameUpdated(UnityARCamera camera)
{
    // Get the frame pixel buffer
    var cvPixBuf = camera.videoParams.cvPixelBufferPtr;

    // Somehow convert to BGRa and insert into OpenCV datastructure

    // Perform OpenCV related actions 
}

但是,我不确定如何将 camera.videoParams.cvPixelBufferPtr 转换为我可以与 OpenCV 一起使用的东西。

如果有人知道我可以用来执行此操作的另一种方法,那也将不胜感激。

最佳答案

尝试创建一个新相机,将 UnityARVideo 添加到其中并将其剔除 mask 设置为空,然后将其渲染到 RenderTexture。它将向纹理渲染未增强的相机馈送。

关于c# - 在将 ARKit 与 Unity 结合使用时访问 iPhone 相机帧,转换 camera.videoparams.cvPixelBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47578294/

相关文章:

c# - 是否可以单步执行 C++ 结构的成员?

iOS 在 UIView 中滑动到其他 UIView 之上

ios - 在 iOS 设备和 iOS 模拟器上运行的 .a 应该是什么架构

python - 将一组图像拼接在一起的最pythonic方式

visual-studio-2010 - 如何删除此特定链接器错误?

c# - 是否可以使用 C# 更改 Visual Studio 中的默认文档标题

c# - 不通过调试器运行关键业务 C# 控制台应用程序的原因是什么?

c# - 以编程方式控制 xml 元素的顺序

ios - 如何在 iOS 中使用图像创建连续动画

c++ - OpenCV - 查找对象形状