OpenGL有多强大?

时间:2011-01-22 15:31:04

标签: opengl image-manipulation

我想创建一个应用程序,它将通过摄像头捕获一个应用程序,并将在几毫秒内操纵它拍摄的实时图像。

目标是应用程序应该用我将提供的其他衣服来改变我的衣服。

我几乎没有问题:

OpenGL是否具有修改实时图像的能力,它会改变我在计算机图像中的衣服?我会移动我的手等,它是否准确,所以它看起来就像我换衣服而不是我穿的原件?

4 个答案:

答案 0 :(得分:8)

不是权力问题。 OpenGL用于渲染3D图形。你想要的是计算机视觉和增强现实领域。使用正确的工具完成任务。您可能想看一下OpenCV。

答案 1 :(得分:4)

OpenGL确实可以非常快速地添加服装。这甚至不会使其合成图像的能力变得紧张。

但是,您可能会误解它究竟能为您做些什么。它可以混合图像,但你必须告诉它完全在哪里画衣服,如何变形等等,你必须自己解决这些问题。 OpenGL无法帮助您找到该人的手牌。

答案 2 :(得分:4)

OpenGL是一个渲染库;它的目的是在屏幕上绘制内容。它可能可以用作解决问题的一部分,但只能用作渲染部分。您的问题还需要一些相当严肃的图像处理,从相机中获取源图像,识别人体及其各种部位和姿势,然后将其缩小到衣服上。

如果你穿着怎么办?一件风衣,更换装备(待渲染)是一种形状合适的专业滑冰服?显然,在这种情况下,替换过程需要源图像中不可用的信息。这需要一个预先生成的数据库来描述你的身体,或者限制可能的替换服装的范围(也许只是改变风衣的图案和/或颜色)。

了解OpenCV以及人们对Kinect controller的看法。这并不容易。

答案 3 :(得分:3)

我认为问题更多的是关于今天的显卡(GPU)的功能而不是OpenGL。 OpenGL只是一个用于访问GPU电源的API。

GPU今天非常强大(see my favorite and already a bit outdated chart),我认为他们可以足够快地处理你想要的任务。

您的目标非常(非常)雄心勃勃 - 您需要修改计算机视觉算法才能在GPU上运行良好(并行化它们)并使用它们来检测带衣服的片段,然后替换这些片段。任何这些任务都足以成为硕士论文。

OpenGL可以帮助您完成工作,但您必须使用着色器(在GLSL中)自己编码所有算法并渲染到纹理。

与其他人不同,我不建议使用OpenCV,因为它有一些严重的缺点:

  • 它很慢,除非你有一个非常强大的CPU,否则你不会为你的任务实现交互式帧率
  • 它不使用GPU电源(至少稳定版本)
  • API不直观 - OpenCV更像是一个已实现的CV算法列表而不是框架。你仍然需要知道算法如何工作才能正确使用它。