3

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

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

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

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

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

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

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

1 回答 1

0

If you are targeting a desktop I would use openGL for the whole process.
Use a quad in the background with a texture streaming the video (ie draw each video frame to the openGL texture) then render all your 3D model in openGL ontop of this.

Generaly all the video player frameworks (phonon, directshow etc) all work well as long as you ONLY want to do the simplest "show video in a box" task - as soon as you try and mix them with anything else it's harder than just drawing the images.

(Of course I may be wrong and I would love it if phonon allowed showing a video in an openGL quad with a couple of lines of code!)

于 2012-11-14T18:25:09.530 回答