【问题标题】:Qt: How to render 3D animation shapes over a camera video stream?Qt:如何在相机视频流上渲染 3D 动画形状?
【发布时间】:2012-11-03 06:08:55
【问题描述】:

我的任务是创建一个增强现实应用程序,它的 GUI 类似于 this one(覆盖路径和 FollowMe 概念)。该任务的有趣部分是应用程序应该在 Qt 框架的帮助下在桌面操作系统(Debian/Ubuntu)上完成。 Python 是应用程序的首选语言。

因此,与上述移动应用的最大区别在于,我的应用将使用插入 PC 的 USB 摄像头。

我尝试了几种不同的方法,但似乎都没有满足要求:

  • this example 不起作用;
  • this solution 使用“两层”方法,但是当我尝试渲染上部小部件时,它完全覆盖了底部小部件;
  • this solution 有效,但它有两个缺点:OpenCV 的主要用途不是视频流渲染(错误的工具,我猜 GStreamer 可能更适合),而且它只渲染简单的 4 点形状,它不允许任何带有孔的复杂多边形;

我还浏览了诺基亚的 Qt camerality source code,但似乎这个问题在 Symbian 上以完全不同的方式解决,这在 PC 上不适用(嵌入式摄像头 API 与 PC 上的通用 USB 摄像头)。

我倾向于认为问题可以分为两个问题:

  • 在 Qt PC 应用程序中渲染相机视频流的最佳方式是什么?
  • 在 Qt PC 应用程序中,将动画 3D 图像(可能是 OpenGL 生成)覆盖在相机视频流上的最佳方法是什么?

【问题讨论】:

    标签: python opengl qt4 video-streaming gstreamer


    【解决方案1】:

    如果您的目标是桌面,我会在整个过程中使用 openGL。
    在背景中使用带有纹理的四边形流式传输视频(即将每个视频帧绘制到 openGL 纹理),然后在此之上在 openGL 中渲染所有 3D 模型。

    一般来说,只要您只想执行最简单的“在盒子中显示视频”任务,所有视频播放器框架(phonon、directshow 等)都可以正常工作 - 只要您尝试将它们与其他任何东西混合使用就更难了不仅仅是绘制图像。

    (当然我可能错了,如果 phonon 允许使用几行代码在 openGL quad 中显示视频,我会很高兴的!)

    【讨论】:

    • 这种方法对我来说是众所周知的。问题 - 如何从视频流中接收一帧?
    猜你喜欢
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    相关资源
    最近更新 更多