首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初学者的OpenGL与OpenCV

初学者的OpenGL与OpenCV
EN

Software Engineering用户
提问于 2014-12-18 01:33:34
回答 2查看 15.2K关注 0票数 3

我是一名大一新生,目前正在学习C++编程。我擅长数学和物理,所以我希望用OpenGL专攻2D/3D图形。我的问题是关于OpenGL和OpenCV之间的区别,以及这些区域的重叠程度。根据我所读到的,一个创建图形,而另一个处理它们。我有很多关于3D图形和与之相关的数学的书籍。我想知道的是,我在OpenGL中学到的相同概念是否可以应用到OpenCV中。是否有可能成为一名C++软件工程师,专门研究OpenGL和OpenCV,还是一个不切实际的目标?

我问这些问题是因为我明白2D/3D图形编程需要大量的数学和物理知识,但我对OpenCV和“踏入大门”所需的必备技能不太了解。

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2014-12-18 02:21:51

OpenGL是一个三维图形API。它提供了描述3D场景的API,并将其呈现给框架缓冲区,并最终显示在屏幕上。它的基元是顶点列表、三角形列表、法线向量列表等。2D是3D的特例;IIRC OpenGL没有显式的2D支持(即精灵和比特blit)

OpenCV是一种计算机视觉( CV ) API,实现了各种CV算法、blob检测、模板匹配等。

OpenCV通常对真实的图像数据进行操作,而不对OpenGL生成的图形进行操作。(除非一个人试图制造一个AI机器人,它只看到游戏的帧缓冲区输出,但却完全在另一个切线中。)

“是否有可能成为一名C++软件工程师,专门研究OpenGL和OpenCV,还是一个不切实际的目标?”

当然,它们是不同类型的系统,您可以专攻不止一件事情。至于OpenGL和3D图形,如果你学习了它们,你可能可以使用它们中的任何一个。

对于计算机视觉来说,学习一个系统肯定会对另一个系统有所帮助,但可能与计算机图形学的程度不同。

注:这个问题可能属于另一个董事会。

票数 5
EN

Software Engineering用户

发布于 2014-12-18 02:01:02

我从未使用过OpenCV,但是AFAIK与OpenGL有很大的不同。OpenGL是围绕许多全局状态构建的一个C++ (因此它经常被称为状态机),而OpenCV则公开了一个更面向对象的C++接口,大量使用了模板。

OpenGL意在成为图形硬件的一个瘦抽象层,因此从某种意义上说,它也可以被看作是设备驱动程序。这个API的主要关注点是实时渲染,而不是通用计算.因此,OpenGL提供的工具主要集中在尽可能快和高效地将多边形绘制到屏幕上。

我不能在OpenGL和OpenCV之间做一个很好的对比,但我的理解是,CV更多地关注于离线图像处理,因此如果与GL相比,它是一个完全不同的概念。不过,我想,OpenGL经常与OpenCV一起使用来实现CV所做的图像处理的可视化,所以如果您关注CV,您可能会从了解像GL这样的图形API中获益。如果您的主要兴趣是实时图形,如游戏和CG电影,那么OpenGL就足够了。你不太可能需要了解这些领域的计算机视觉工具。

最后,你说得对,2D/3D图形编程需要数学和物理知识。如果你对数学感到舒服,生活就容易多了。如果你喜欢这个领域,首先学习数学,然后学习图形API,比如OpenGL,来实现这个理论。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/266752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档