c++ - OpenGL ES 上的图像几何重映射

标签 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 吗?

最佳答案

配备优质显卡(与 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 有固定的管道,很难用它来进行并行计算。

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

关于c++ - OpenGL ES 上的图像几何重映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26801323/

相关文章:

opencv - 根据实际尺寸计算物体的图像尺寸

c++ - 在 OpenGL 中使用 for 循环创建数组

c++ - 从枚举器获取枚举类型

c# - C++ 格式化,如 Visual Studio C# 格式化

c++ - 为 ffmpeg 编码设置 RGB 帧的单个像素

OpenCV : is a contour closed or not

c++ - 安装opencv后如何安装OpenCV_contrib模块

c++ - 使 OpenGL 代码适应 Qt(特别是 keyPressEvent)

objective-c - 在不同的NSWindow中的NSOpenGLView上绘制不同的形状

c++ - 连接 UDP 套接字,但仍从其他源接收数据报