OpenGL,Open CV,OpenCL与OpenAL,WebGL研究

 1.OpenGL(全写Open Graphics Library),工业标准,计算机图形库,用于三维图形;专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。OpenGL(open graphics library)是一种独立的平台无关的三维图形开发库,在各种语言下进行主框架开发并结合应用OpenGL函数都可以开发出三维游戏。OpenGL驱动。
 2.OpenCV,跨平台开源计算机视觉库,图像处理和计算机视觉方面的很多通用算法
 应用领域:1、人机互动;2、物体识别;3、图像分割;4、人脸识别;5、动作识别;6、运动跟踪;7、机器人;8、运动分析;9、机器视觉;10、结构分析;11、汽车安全驾驶;
 3.OpenCL,(全称Open Computing Language,开放运算语言),并行计算,是第一个面向异构系统通用目的并行编程的开放式、免费标准。OpenCL提供了基于任务分割和数据分割的并行计算机制。OpenCL类似于另外两个开放的工业标准OpenGL和OpenAL。OpenCL扩展了GPU用于图形生成之外的能力。
 4.OpenAL,工业标准,用于计算机音频方面;跨平台音效API,在来源物体、音效缓冲和收听者中编码。

> OpenGL ES
Android-GLSurfaceView简单使用- http://blog.csdn.net/sz66cm/article/details/52401579
写在前面的话:为了做VR播放器研究OpenGL ES;游戏中也有使用OpenGL ES;以及图片处理。

-- OpenGL ES使用场景:
 1.图片处理。比如图片色调转换、美颜等。视频滤镜、音频滤镜.
 2.摄像头预览效果处理。比如美颜相机、恶搞相机等。
 3.视频处理。摄像头预览效果处理可以,这个自然也不在话下了。
 4.3D游戏。比如神庙逃亡、都市赛车等。

  为OpenGL ES创建一个视图(View)容器,一种实现方式是创建一个类实现GLSurfaceView和GLSurfaceView.Renderer。GLSurfaceView是显示图形的视图(View)容器,GLSurfaceView.Renderer是控制画图的方法。
  GLSurfaceView是多种集成OpenGL ES到应用方法中的一种,对于全屏或者近乎全屏的图形视图(graphics view)来说,应该选择这种方式。当用户只是对一小区域使用OpenGL ES绘制图形,那么可以选择TextureView.
  渲染视频画面和渲染图片不同,视频需要不断地刷新,每当有新的一帧来时,我们都应该更新纹理,然后重新绘制。我们使用SurfaceTexture来设置MediaPlayer的setSurface.主要的原因是,MediaPlayer的输出往往不是RGB格式(一般是YUV),而GLSurfaceView需要RGB格式才能正常显示,另外,获取每一帧的数据并没有那么方便。
  创建一个纹理时,视频的每一帧都可以看成图片,也就是要不断的更新纹理。 

OpenGLES2.0图片处理- http://blog.csdn.net/junzia/article/category/6462864
https://developer.android.com/guide/topics/graphics/opengl.html
AndroidOpenGLDemo- https://github.com/doggycoder/AndroidOpenGLDemo

-- OpenGL ES当前主要版本有1.0/1.1/2.0/3.0/3.1/4.x。这些版本的主要情况如下:
  OpenGL ES1.0是基于OpenGL 1.3的,OpenGL ES1.1是基于OpenGL 1.5的。Android 1.0和更高的版本支持这个API规范。OpenGL ES 1.x是针对固定硬件管线的。
  OpenGL ES2.0是基于OpenGL 2.0的,不兼容OpenGL ES 1.x。Android 2.2(API 8)和更高的版本支持这个API规范。OpenGL ES 2.x是针对可编程硬件管线的。
  OpenGL ES3.0的技术特性几乎完全来自OpenGL 3.x的,向下兼容OpenGL ES 2.x。Android 4.3(API 18)及更高的版本支持这个API规范。
  OpenGL ES3.1基本上可以属于OpenGL 4.x的子集,向下兼容OpenGL ES3.0/2.0。Android 5.0(API 21)和更高的版本支持这个API规范。

  OpenGL ES 2.0相对1.x全新的两个重要东西——顶点着色器和片元着色器。着色器语言(Shading Language)是一种高级的图形编程语言,仅适合于GPU编程,其源自应用广泛的C语言。对于顶点着色器和片元着色器的开发都需要用到着色器语言进行开发。它是面向过程的而非面向对象。
  诸如3D模型加载、贴图、阴影、粒子、混合与雾、标志板、天空盒和与天空穹等知识。如果没有顶点着色器OpenGL就不知道在哪绘制图形,如果没有片段着色器就不知道要怎么绘制组成图形的点,直线,三角形的片段.
  从OpenGL ES 2.0的渲染管线图中,可以看到OpenGL ES 2.0渲染过程为:读取顶点数据——执行顶点着色器——组装图元——光栅化图元——执行片元着色器——写入帧缓冲区——显示到屏幕上。

在图像处理或者游戏开发的领域来使用矩阵Matrix。在OpenGLES的世界里面是没有正方形和圆形的,只有点、线、三角形。

-- OpenGLES 主要包含以下特性:
 GLSL是一种面向过程的语言,和Java的面向对象是不同的。
 GLSL的基本语法与C/C++基本相同。
 它完美的支持向量和矩阵操作。
 它是通过限定符操作来管理输入输出类型的。
 GLSL提供了大量的内置函数来提供丰富的扩展功能。

Android OpenGL ES2.0编程教程系列- http://blog.csdn.net/u011520181/article/category/6249634
openGL官网及openGL ES入门- http://www.opengl.org
OpenGL入门学习- http://blog.csdn.net/xsckernel/article/details/50158329
opengl es自定义相机以及实时滤镜的实现- https://github.com/aasoga/CameraDemo
  OpenGL入门学习一:环境搭建
  OpenGL入门学习二:点直线和多边形,在OpenGL中指定顶点,开始绘制:例一画一个圆; 例二画一个五角星;例三画出正弦函数的图形
  OpenGL入门学习三:关于点;关于直线;关于多边形
  OpenGL入门学习四:RGBA颜色,索引颜色,指定清除屏幕用的颜色,指定着色模型
  OpenGL入门学习五:模型变换和视图变换,投影变换,视口变换,操作矩阵堆栈
  OpenGL入门学习六:双缓冲技术,实现连续动画,关于垂直同步,计算帧速
  OpenGL入门学习七:建立光照模型,法线向量,控制光源,控制材质,选择光照模型
  OpenGL入门学习八:分配显示列表编号,创建显示列表,调用显示列表,销毁显示列表,
  OpenGL入门学习九:源因子和目标因子,二维图形混合举例,实现三维混合

-- 使用Android的OpenGL编写视频播放器
  Android自身有MediaPlayer播放器,为什么还要使用OpenGL?因为使用OpenGL可以实现更多的效果,比如对视频翻转一定角度,加任意特效,多视频合并播放等,类似“激萌”的APP应该就是这样做的;相比之下,直接调用MediaPlayer的功能就少太多了。
Android视频播放器使用NDK,OpenGL ES的,和FFmpeg的(Android Video Player Using NDK, OpenGL ES, and FFmpeg)
GLSurfaceView竖屏切横屏 Android ,OpenGL竖屏切横屏 Android

-- FFMPEG+opensl/FFMPEG+SDL播放音频 
 GLSurfaceView.Renderer,onSurfaceCreated()/onSurfaceChanged()/onDrawFrame()
 mGLSurfaceView  surfaceCreated()/surfaceChanged()

Android中GLSurfaceView在横竖屏切换时重新创建表面缓冲导致的问题- http://blog.k-res.net/archives/1702.html
  OpenGL大量使用了向量和矩阵,矩阵的最重要的用途之一就是建立正交和透视投影。其原因之一是,从本质上来说,使用矩阵做投影只涉及对一组数据按顺序执行大量的加法和乘法,这些运算在现代GPU上执行的非常快。
  Android 底层提供了OpenGL 的接口和方法,可以动态绘制图片,但是这种方式对不熟悉计算机图形学的开发者来讲是一个很大的挑战。一般开发游戏,采用OpenGL 方式。 

解决android opengl es绘制物体屏幕横竖屏切换物体压扁形变以及矩阵相关知识- http://blog.csdn.net/pangrui201/article/details/75452155
opengl es 绘制图学习- http://blog.csdn.net/pangrui201/article/category/7026397
Android OpenGL ES绘制图学习- http://blog.csdn.net/liyuanjinglyj/article/category/5600517

GLSL语言实现的两类着色器:顶点处理器(Vertex Processor)和片断处理器(Fragment Processor)。
如何使用OpenGL接口创建着色器程序- https://github.com/twinklingstar20/twinklingstar_cn_demo_basic_shader/
  gl是一套图形编程API,是图形应用开发的工业标准接口,每个平台都有相应的实现。可视化的操作系统都提供了图形编程接口,通常这一系列的接口作为操作系统的一个系统服务,为客户提供窗口渲染.

图像处理(滤镜)及塔防游戏- http://blog.csdn.net/oshunz?viewmode=contents
Android内存泄漏思考- http://www.phpxs.com/post/5780/
Android 游戏存档分析,游戏界面的绘制 Android。OCR引擎 图片的“匹配”。
Android OpenGL渲染双视频- http://blog.csdn.net/a296777513/article/details/70495534
面向对象以及运用最大最小搜索的井字棋设计(附源码)- http://blog.csdn.net/simon_coder/article/details/51367463
Android之3D物理引擎- http://blog.csdn.net/htttw/article/details/7599010
android下有很多优秀的3D物理引擎,如alien3d,gamine,jpct等.

-- OpenGL_ES是khronos协会从OpenGL裁剪定制而来的,专为手机,游戏机等嵌入式设备而设计。
 OpenGL_ES_1.x 为固定渲染管线(Fixed_Function)而设计。子版本包括:1.0,1.1。1.0从OpenGL_1.3裁减而来;1.1从OpenGL_1.5裁减而来。1.1向下兼容1.0。
 OpenGL_ES_2.x 为可编程渲染管线(Programmable)而设计。目前只有2.0这一个子版本,从OpenGL_2.0裁减而来。和1.x的区别是可以支持vertex和pixel shader,因此能够实现更多的特效。另外2.0就不再支持1.x里面的固定管线功能了,也就是说2.x并不向下兼容1.x。

-- OpenGL ES与OpenGL 的区别- http://blog.csdn.net/weiwangchao_/article/details/7831044
  OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。
  OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
 
-- OpenGL绘制图形等,OpenGL HLS颜色模型?颜色量化算法?
关于Android配色 自适应颜色的实现- http://blog.csdn.net/u014058619/article/details/23860665
android使用openGL提供了特殊的view作为基础叫做GLSurfaceView。我们的view需要继承GLSurfaceView。
Android中OpenGL屏幕绘制各种图形- http://download.csdn.net/detail/Luohuals/3321503
OpenGL绘制图形(包含20多个基本例子)- http://download.csdn.net/detail/liyu294747042/4462865
Android OpenGL与3D应用开发之3D图形绘制- http://blog.csdn.net/a511341250/article/details/39523611
Android OpenGL10 基本图形绘制 <3>- http://blog.csdn.net/qq_31726827/article/details/51308580
Android OpenGL 开始篇- http://blog.csdn.net/qq_31726827/article/category/6178008
如何封装 opengl 流程 -- 以为android-opengl-canvas例- http://www.jianshu.com/p/c45d11627c70#
Android OpenGL 显示基本图形及相关概念解读- http://blog.csdn.net/huachao1001/article/details/52044602
opengles绘制可旋转的六角星- http://blog.csdn.net/hb707934728/article/details/52085998
opengles-绘制旋转三角形- http://blog.csdn.net/hb707934728/article/details/52044702

> OpenCV
opencv开源,release版本- https://opencv.org/releases.html
OpenCV图像剪切的扩展和高级用法:任意裁剪,边界扩充- http://blog.csdn.net/guyuealian/article/details/78113325
Facebook 开源 CV 开发平台 Detectron,打包支持各种物体识别算法- https://github.com/facebookresearch/Detectron 

 通过ARKit或ARCore为直播增加AR互动功能。

opencv背景抠图,opencv抠图很简单,只需要调用grabCut函数就可以实现
android opencv抠图- http://blog.csdn.net/u010302327/article/details/78190759
android opencv交互式抠图- http://blog.csdn.net/u010302327/article/details/78898781
Android 高斯模糊效果从319ms到3ms的优化实现- http://blog.csdn.net/jdsjlzx/article/details/51699463
GPUImage 顶点着色器和片元着色器 详解- http://blog.csdn.net/jeffasd/article/details/52384821
最佳的图像抖动模式(C++代码)- https://github.com/Atrix256/DitherFindGradientDescent https://blog.demofox.org/2017/03/09/how-to-train-neural-networks-with-backpropagation/
https://blog.demofox.org/2015/08/19/gaussian-blur/
-- 前端Canvas简单的智能抠图功能- https://github.com/monkeyWangs/Matting

 canvas标签也是在html5中出现的,最先开始支持的是2d图形绘制,现在又开始有了基于WebGl的3d绘制。WebGl实际上是html5提供的新特征的一部分,通过Html5的canvas元素来展现。http://www.cnblogs.com/jyli/archive/2010/07/25/1784902.html 

-- OpenCV 图像识别
  OCR识别技术与OpenCV。银行卡扫一扫识别sdk使用的是"TH-OCR"技术,国外有个一个叫card.io的,识别信用卡卡号的,但是只能识别16位凸起的信用卡,还要是标准样式的。支付宝里有个直接拍照识别银行卡号,比card.io牛逼,16位、19位卡号,还有凸起的或者是印上去的卡号都能识别。
android ocr 身份证识别- http://blog.csdn.net/tiandiyinghun/article/details/50985961
Android 银行卡扫描识别获取卡号- http://blog.csdn.net/soulshui/article/details/51162902
使用google 开源的项目tesseract-ocr(ZXing):https://github.com/justin/tesseract-ocr
OpenCVforAndroid应用之银行卡号识别- http://lps-683.iteye.com/blog/2273467

    OpenCV可以完成的功能:原图;灰度图;Canny边缘检测;Hist 直方图计算;Sobel 边缘检测;SEPIA(色调变换)为每一个数组元素执行一个矩阵变换;ZOOM 放大镜;PIXELIZE 像素化;POSTERIZE  多色调分色印。。
 android中利用opencv进行图像识别开发- http://download.csdn.net/detail/xw13782513621/9774224
Android 使用OPENCV实现图像实时对比- http://download.csdn.net/download/prince_wenzheng/9760658
https://github.com/BruceT2010/OpenCV4AndroidSecondSight
OpenCV AR实现思路- http://blog.csdn.net/linshuhe1/article/details/51162517
OpenCV- http://blog.csdn.net/linshuhe1/article/category/6189251
在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的。

OpenCV3编程入门- http://blog.csdn.net/zhmxy555/article/category/1923021

> OpenCL


> OpenAL,处理音频
OpenAL官网:http://www.openal.org/
Android OpenAL编译- http://blog.csdn.net/matrix_laboratory/article/details/53319735
  OpenAL(Open Audio Library),OpenAL 主要的功能是在来源物体、音效缓冲和收听者中编码。OpenAL是一个开源的音频后处理工具包,可以添加各种音效,修改声源空间位置等等。不同于 OpenGL 规格,OpenAL 规格包含两个API分支;以实际 OpenAL 函式组成的核心,和 ALC API,ALC 用于管理表现内容、资源使用情况,并将跨平台风格封在其中。还有“ALUT”程式库,提供高阶“易用”的函式,其定位相当于 OpenGL 的 GLUT。
 Openal需要OpenSLES支持,所以需要android-9以上才能支持- https://github.com/AerialX/openal-soft-android
 把OpenAL的代码给拆分出来- https://github.com/xiyanglu/AndroidOpenAL
 OpenAL Github- https://github.com/i25ffz/openal-soft

OpenAL播放pcm或wav数据流-windows/ios/android(一)- http://blog.csdn.net/zhuweigangzwg/article/details/53286945
android平台需要做openal的jni,android的openal库可以参考- http://blog.csdn.NET/matrix_laboratory/article/details/53319735
 OpenAL(Open Audio Library)是自由软件界的跨平台音效API。它设计给多通道三维位置音效的特效表现。其 API 风格模仿自OpenGL。

> NanoGL WebGL,移动端浏览器webgl与canvas 2D渲染的效率,
WebGL原生开发开启网页3D渲染新时代。《WebGL Beginners Guide》。
NanoVG - https://github.com/memononen/nanovg
  WebGL是一种3D绘图标准,这种绘图技巧标准允许把JavaScript和OpenGL ES 2.0结合在一起,为HTML5 Canvas供给硬件3D加速渲染。WebGL技巧标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有繁杂3D结构的网站页面,甚至可以用来设计3D网页游戏等。WebGL开启了网页3D渲染的新时代,它允许在canvas中直接渲染3D的内容,而不借助任何插件。

你可能感兴趣的:(OpenGL与图形学,方案及流程系列,OpenCV与OpenCL)