我有一个在PC上运行并使用OpenCV重映射的算法。它很慢,我需要在嵌入式系统上运行它(例如这样的设备:http://www.hardkernel.com/main/products/prdt_info.php
它有OpenGL 3.0,我想知道是否可以在OpenGL着色器中编写代码来进行重映射(OpenCV重映射)。
我有另一台具有OpenGL 2.0的设备,该设备可以进行着色器编程吗?
在哪里可以了解OpenGL中的着色器编程?
我正在使用Linux。
代码在PC上运行大约需要1分钟,在嵌入式系统上大约需要2个小时!
我需要在嵌入式系统上运行它,因此我认为使用OpenGL或OpenCL(该板具有OpenCL 1.1驱动程序)。
这个的最佳选择是什么?我可以使用OpenGl 2还是OpenGL3?
答案 0 :(得分:0)
具有良好图形卡(与OpenCV兼容)的PC比像Odroid或Banana Pi这样的小型嵌入式PC快得多。我的意思是这些平台上的计算能力/价格或计算能力/能量较低。
如果你的算法很慢:
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有固定的管道,很难将它用于并行计算。
如果你真的需要使用嵌入式平台,也许你可以使用它们的云?