OpenCV和OpenGL的异同
OpenCV
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android、Mac OS操作系统上。轻量级且高效,由一系列C函数和少量C++类构成,同时提供了python、matlab等语言的接口。实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV是用C++语言编写的,其主要接口也是C++语言,但是依然保留了大量的C语言接口。具有python、Java和matlab接口,并支持Windows、Linux、Mac Os,OpenCV主要倾向于实现实时视觉应用,并在可用时利用MMX和SSE指令,如今也提供对于C#、Ch、ruby、GO的支持。
**BSD协议是“宽容自由软件许可证”中的一员,在软件复用上给予了最小限度的限制。BSD协议允许作者使用该协议下的资源,将其并入私人版本的软件,该软件可使用闭源软件协议公
OpenGL
OpenGL是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API),这个接口由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象。
而另一种程序接口系统是仅用于Microsoft Windows上的direct3D。
OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。OpenGL的高效实现实例存在于Windows、部分Unix平台和Mac OS,这些显示由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。
开放源代码库Mesa是一个纯基于软件图形API,其代码兼容于OpenGL
direct3D是微软封装的图形API,基于微软的通用对象模式COM(common object mode)的3D图形API;
OpenGL是开放的图形API。
Mesa是一个MIT许可证下开放源代码的三维计算机图形库,以开源形式实现了OpenGL的应用程序接口。
OpenCV和OpenGL的区别
- OpenCV主要是提供图像处理和视频处理的基础算法库,还涉及一些机器学习的算法。比如实现视频降噪、运动物体的跟踪、目标(如人脸)的识别这些属于OpenCV领域。
- OpenGL则专注于Graphics、3D绘图。
- 前者专注于从采集到的视觉图像中获取信息,是用机器来理解图像;后者是用机器绘制合适的视觉图像给人看。即OpenCV是从图像到数据,OpenGL是从数据到图像。
graphics.h是TC的针对DOS下的一个C语言图像库,使用时需要用TC的编译器来编译,VC++环境有其它的针对Window的图像库。分为:像素函数、直线和线型函数、多边形函数、填充函数等。