我有一个在 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/