【问题标题】:Unity3D and OpenCV integration and passing each other camera framesUnity3D 和 OpenCV 集成并相互传递相机帧
【发布时间】:2016-11-03 04:06:46
【问题描述】:

背景:

我一直在使用 Unity3D 和 OpenCV 开发一个 AR 项目。集成已通过以下方式完成。

我们的 OpenCV 程序和 OpenCV 库本身编译成一个动态库(so 文件 Linux)。 (OpenCV库是静态链接的)

然后,在 Unity3D 中,我们在 C# 脚本中导入它 (DllImport) 并使用它的功能。

到目前为止,一切看起来都很清楚,但问题就在这里:这两个部分(Unity3D 和 OpenCV)都需要相机的每一帧,因此有多种方法可以为它们提供相机帧:

  1. Unity3D 读取帧 (WebCamTexture) 并通过转换为三个 2D 数组并传递给 OpenCV 部分来发送它们。 (这样OpenCV部分就无法访问camera了)

  2. OpenCV 部分读取帧 (VideoCapture::open) 并发送回 Unity3D。 (这样Unity3D就无法访问相机了)

  3. 两个部分都允许打开相机。

请注意,主要处理在 OpenCV 部分完成,Unity3D 只需要帧来显示相机预览。

问题:

一切都与性能有关!哪种方法在性能方面是最好的方法,并且是最佳实践的观点?

【问题讨论】:

    标签: performance opencv unity3d augmented-reality


    【解决方案1】:

    在性能方面,您应该使用 #2 或制作自己的插件来直接访问相机。

    WebCamTexture#1 选项是最简单的方法,但它的大问题是它没有提供足够的帧来执行视频处理。

    此外,WebCamTexture 对它可以在 iOS 和 Android 上返回的图像大小有限制,这意味着您获得的图像质量将与设备可以提供的图像质量不同。因此提供来自相机的低质量图像。大多数视频处理 API(例如 Vuforia)都使用自己的原生 API 来接收帧,您也应该这样做。

    WebCamTexture 不适合这个。

    【讨论】:

    • 感谢您的意见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多