图像在OpenGL ES上进行几何重新映射

时间:2014-11-07 12:31:55

标签: c++ opencv opengl opengl-es

我有一个在PC上运行并使用OpenCV重映射的算法。它很慢,我需要在嵌入式系统上运行它(例如这样的设备:http://www.hardkernel.com/main/products/prdt_info.php

它有OpenGL 3.0,我想知道是否可以在OpenGL着色器中编写代码来进行重映射(OpenCV重映射)。

我有另一台具有OpenGL 2.0的设备,该设备可以进行着色器编程吗?

在哪里可以了解OpenGL中的着色器编程?

我正在使用Linux。

编辑1

代码在PC上运行大约需要1分钟,在嵌入式系统上大约需要2个小时!

我需要在嵌入式系统上运行它,因此我认为使用OpenGL或OpenCL(该板具有OpenCL 1.1驱动程序)。

这个的最佳选择是什么?我可以使用OpenGl 2还是OpenGL3?

1 个答案:

答案 0 :(得分:0)

具有良好图形卡(与OpenCV兼容)的PC比像Odroid或Banana Pi这样的小型嵌入式PC快得多。我的意思是这些平台上的计算能力/价格或计算能力/能量较低。

如果你的算法很慢:

  • 您确定您的图形驱动程序已正确配置为支持OpenCV吗?
  • 尝试改进您的算法。在当前的PC上,使用OpenCL很容易获得1TFLOP,所以如果你的程序真的需要更多,你应该考虑计算机云等。检查您是否配置了适当的缓冲区类型等。

OpenGL 3允许使用常规着色器,但OpenGL 2非常不同,并且必须更难或不可能使算法兼容。

要学习OpenGL / GLSL,要非常小心,因为大多数页面都学习坏/旧代码。 我推荐你一本好书,比如:http://www.amazon.com/OpenGL-Shading-Language-Cookbook-Edition/dp/1782167021/ref=dp_ob_title_bk

编辑1

OpenGL 3+或OpenGL ES 3+具有通用着色器,可用于快速计算。所以,是的,你将获得性能提升。但是这些平台上的显卡非常小/慢(通常少于10个内核)。不要期望在此ODROID上获得与在具有500-2000 GPU核心的PC上相同的1分钟结果。

OpenGL 2有固定的管道,很难将它用于并行计算。

如果你真的需要使用嵌入式平台,也许你可以使用它们的云?

相关问题