线性代数的本质——矩阵与线性变换
变换类似于函数,输入参数值,输出结果。为什么习惯性称作为变换而不是函数呢?变换从某种意义来说是从几何直观呈现出变化。比如接收一个向量输入,得到一个向量输出。在几何空间中的可视化表达就是原向量转动、缩放得到输出向量。而线性变换就是这个转动与缩放的过程,此过程可以通过一个矩阵来进行数值化的精确表达。
变换类似于函数,输入参数值,输出结果。为什么习惯性称作为变换而不是函数呢?变换从某种意义来说是从几何直观呈现出变化。比如接收一个向量输入,得到一个向量输出。在几何空间中的可视化表达就是原向量转动、缩放得到输出向量。而线性变换就是这个转动与缩放的过程,此过程可以通过一个矩阵来进行数值化的精确表达。
本篇文章中引用了3Blue1Brown视频中的截图,也是线性代数系列的第一个小总结:理解什么是向量,向量的线性组合,什么是向量张成的空间,向量的线性相关性如何理解。最近更新线性代数的系列文章,强烈推荐 bilibili 上一位叫做 3Blue1Brown 的Up主,讲了很多数学方面的内容,而且讲述的角度非常独特,真正可以让人感觉到数学的魅力。

U8g2是嵌入式设备的单色图形库,主要应用于嵌入式平台,如Arduino、STM32。几乎所有Arduino API的主板都得到U8g2的支持,U8g2支持大多数主流的单色OLED和LCD显示控制器 。上图是ESP8266 NodeMCU通过U8g2在SSD1306(0.96寸 128X64)展示出的效果,物理总线使用的是I2C总线。
本文主要介绍Handle的原理、如何处理Handler可能导致的内存泄漏问题,需要深入理解Handler的机制,当我们在创建Handler的时候,要明白现在用的是哪个Looper?其他线程如何使用Looper进行通信,释放Looper的区别,以及HandlerThread的原理与用法等等内容。
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的接入设备是非常划算的。