OpenCV 与 OpenGL 的关系是什么?

OpenCV是 Open Source Computer Vision Library
OpenGL是 Open Graphics Library
OpenCV主要是提供图像处理和视频处理的基础算法库,还涉及一些机器学习的算法。比如你想实现视频的降噪、运动物体的跟踪、目标(比如人脸)的识别这些都是CV的领域
OpenGL则专注在Graphics,3D绘图。
其实两者的区别就是Computer Vision和Computer Graphics这两个学科之间的区别,前者专注于从采集到的视觉图像中获取信息,是用机器来理解图像;后者是用机器绘制合适的视觉图像给人看。
似乎没啥关系!

作者:李智辉
链接:https://www.zhihu.com/question/20212016/answer/14468287
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

完整版本回答参见专栏文章
OpenCV 为啥勾搭上 OpenGL? - 黑客与画家 - 知乎专栏

一个是最广泛使用开源的计算机视觉库
一个是三维工业标准
两者本毫无关系
不过自2.3开始,OpenCV的highgui模块开始支持OpenGL渲染

另外增强现实(AR)应用中,既可能用到OpenCV,也可能用到OpenGL

由于显卡的能力增强,现在的 OpenCV 已经有新的形态了,即大量的运算位于显卡上。

  • 运算通过 CUDA 或 OpenCL
  • 渲染通过 OpenGL

这两点意味着除了用户界面交互与文件IO外(highgui模块),可以逐渐脱离 CPU。

这才是 OpenCV 与 OpenGL 的真正关系,或者说 OpenCV 与显卡的真正关系。

作者:Vinjn张静
链接:https://www.zhihu.com/question/20212016/answer/14349503
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

时间: 2024-08-07 17:00:48

OpenCV 与 OpenGL 的关系是什么?的相关文章

opencv和openGL的关系

OpenCV是 Open Source Computer Vision Library OpenGL是 Open Graphics Library OpenCV主要是提供图像处理和视频处理的基础算法库,还涉及一些机器学习的算法.比如你想实现视频的降噪.运动物体的跟踪.目标(比如人脸)的识别这些都是CV的领域 OpenGL则专注在Graphics,3D绘图. 其实两者的区别就是Computer Vision和Computer Graphics这两个学科之间的区别,前者专注于从采集到的视觉图像中获取

OpenCV 为啥勾搭上 OpenGL

OpenCV 为啥勾搭上 OpenGL? Vinjn张静· 2 年前 如果读者留意 OpenCV 2.3 之后的版本,那么会发现 cv::ogl namespace,ogl 自然是 OpenGL了.一个三维计算机图形库为何出现在计算机视觉中,传统的 CV 开发者是否需要学习它,这些问题待我一一来回答. 问题一:为何引入 OpenGL? 在 2.3 之前 OpenCV 的渲染部分都是由 CPU 来实现的,不论是画线还是把图片显示到屏幕上.这有两个问题,速度慢,同时没法画三维物体.引入 OpenGL

OpenCV2学习笔记(十七):VS2013中运行支持OpenGL的OpenCV工程

之前一直用Qt+OpenCV开发项目,而在VS中直接偷懒使用预编译的OpenCV进行开发,结果在使用OpenGL时提示"No OpenGL support": 上网查了一下,原因很明显,是因为预编译好的library不支持OpenGL,因此需要使用cmake重新build工程.我的开发环境是:Win 8.1+VS2013+OpenCV 2.4.9. 从OpenCV2.4.2版本开始,OpenCV在可视化窗口中支持OpenGL,在highgui的模块中可找到接口.这使得OpenCV可以轻

opencv:同时装多版本opencv的选用/OPENGL

参考:opencv CmakeLists.txt 小示例 用这个the book "Mastering OpenCV with Practical Computer Vision Projects"工程代码:https://github.com/MasteringOpenCV/code/tree/master/Chapter3_MarkerlessAR 这是cmakelists文件 cmake_minimum_required(VERSION 2.6) project(EXAMPLE_

OpenGL中的深度、深度缓存、深度测试及保存成图片

1.深度 所谓深度,就是在openGL坐标系中,像素点Z坐标距离摄像机的距离.摄像机可能放在坐标系的任何位置,那么,就不能简单的说Z数值越大或越小,就是越靠近摄像机. 2.深度缓冲区 深度缓冲区原理就是把一个距离观察平面(近裁剪面)的深度值(或距离)与窗口中的每个像素相关联.      首先,使用glClear(GL_DEPTH_BUFFER_BIT),把所有像素的深度值设置为最大值(一般是远裁剪面).      然后,在场景中以任意次序绘制所有物体.硬件或者软件所执行的图形计算把每一个绘制表面

Android OpenGL ES 应用(一)

OpenGL已经成了3D的一个"标准" 因为它能跨平台,接口也比较丰富,几乎大部分的手机3D游戏都和OpenGL有关系. 当然还有微软有direct X 但只能在微软平台上使用. OpenGL底层是c/c++实现,JAVA中使用都是用封装好的类库.Android提供了以下几个接口包 可使用,基本能达到3D技术的要求. Android平台用OpenGL ES 这个子集来处理图像,现在OpenGL ES基本用2.0的了,很少再用1.0的,3.0还未流行起来. 首先编写判断Android设备

OpenGL初使用,glut库安装(vs2013)

最近要开始做三维重建,需要使用opencv 和 openGL,第一次使用OpenGL,当然要从装glut库来开始. glut 库文件下载地址如下:http://download.csdn.net/detail/hyqsong/8618163 安装步奏如下: 1.将glut.h,放在vs2013安装目录的include下,新建一个GL目录(没有的话):例如我的路径是: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\GL

IplImage, CvMat, Mat 的关系和相互转换(转)

(看到的一篇非常好的文章,讲opencv内部类之间的关系的.) opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化.而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放.单通道提取.图像阈值操作等)进行了优化.在opencv2.0之前,opencv是完全用C实现的,但是,IplImage类型与CvMat类型的关系类似

OpenGL 绘制效果保存成图片

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net opengl中有一个非常有用的函数:glReadPixels(),可以读取各种缓冲区(深度.颜色,etc)的数值.要将opengl的绘制场景保存成图片,也需要使用这个函数. 一个简单的例子见如下的c程序.按键盘上的“C”键,可以将读取的图像缓冲区数据存储成tmpcolor.txt. #include "windows.h"