0%

Opencv作为图像处理开源库包含了Object Tracking目标追踪的一些API,使用Opencv能够方便快捷的编写目标追踪程序。OpenCV实现多种目标跟踪算法,只需要选择对应的跟踪器即可实现目标跟踪。纯应用而已,暂且不谈理论相关的内容。Demo是使用KCF跟踪器对视频中的汽车进行目标跟踪。

通过ESP8266 NodeMCU建立TCP/UDP Server,可以轻松实现单点/多点Client与MCU的通信, WiFiServer库用于ESP8266的TCP协议通信,WiFiUDP库用于UDP协议通信。 为了不阻塞Loop中的任务,而且Ticker中不建议进行阻塞式IO,则可以用Ticker负责检测新的客户端连接或者新数据包,Loop中进行IO操作,这样更高效。

ESP8266-NodeMCU是一个开源硬件开发板,由于它支持WIFI功能,所以在IOT领域,Arduino开发板最大的对手之一就是ESP8266-NodeMCU开发板。ESP8266-NodeMCU尺寸与Nano类似,他并不是Arduino团队开发的,但是我们也可以使用Arduino IDE 对其进行开发,NodeMCU是以ESP8266芯片为核心的开发板,无论是芯片价格还是开发板的价格都是比较实惠的,总体来说ESP8266作为IOT的接入设备是非常划算的。

通过OpenGL渲染摄像头数据到屏幕时,使用GLSurfaceView就可以完成,如果要做中间层处理,比如美颜等,通过着色器处理之后写入帧缓冲(FBO)来完成的。那么如何从着色器拿到数据然后编码生成视频呢?一般来说,使用软编码或者MediaCodec来进行编码,如果图像的byte[] 拿到了,编码就简单了,但是现在时在着色器中处理的,没有byte[],怎么将我们处理之后的图像变成一个Mp4文件呢?

本篇文章主要是介绍离屏渲染与OpenGL的帧缓冲, 当有些图像不能直接绘制于屏幕上,需要在别的地方做额外的处理预合成,就使用到离屏渲染。所以其实离屏渲染的概念很简单,就是在某块内存中处理图像,经过层层处理,最终效果显示到屏幕上而已。而OpenGL提供了帧缓冲对象 (Frame Buffer Object, FBO),借助FBO很容易实现离屏渲染。

Graphics Pipeline 实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程。图形渲染管线可以被划分为两个主要部分:第一部分把你的3D坐标转换为2D坐标,第二部分是把2D坐标转变为实际的有颜色的像素。下面来看看OpenGL渲染管线的主要流程吧!

OpenGL(Open Graphics Library)定义了一个跨编程语言、跨平台编程的专业图形程序接口规范,所以说OpenGL只是一套规范,不要理解成FFmpeg那种开源库了。本篇文章会涉及OpenGL的着色语言GLSL,以及如何使用OpenGL来渲染摄像头图像到屏幕上,并且通过着色器可以实现灰度化,底片等效果。