树莓派入坑笔记(1.中)
0到3在上篇里面 "树莓派入坑笔记(1.上)"

4:Video to Binary convert
上篇已经大概说完硬件了,中篇说下如何把一个视频处理成用于OLED输出的二进制数据,有相关python基础阅读效果更佳.
我们要做的事情,本质是一大串图像处理的问题,用脚本批量操作是比较方便的,可以用matlab或者python.我用的python opencv.当然,网上有现成的图片转oled数据工具可以下载,不过那工具一次似乎只能转换一张图片,实在没有脚本来的方便,而且还可能有显示乱码的问题.
虽然树莓派上有自带的python 但是这些操作不建议在树莓派上完成,一个最直接的原因是比电脑要慢.
先看下128像素*64像素的OLED能输出的图像数据是怎么储存的

下面直接说代码
需要电脑上有numpy库和opencv-python库.不会的私信我(或者b站up主@佩尔方程)
先从视频构造VideoCapture对象(假设我们的bad apple视频和下面脚本放在同一目录下,且重命名为video.mp4),打开一个文件f作二进制输出.
查手册知captrue.read()返回值为二元组(ret,frame),如果视频没有处理完,ret为true,frame为当前这帧的图像对象.如果视频处理完了,ret为false,访问frame会出错.
那么ok,如果处理完了,跳出循环关闭文件,洗洗睡了.
假定视频没有处理完
先开一个数组arr 置零以存储这一帧的处理结果
先把原理那帧图像用resize函数改个大小扔到img里面去.
然后把img用cvtColor转灰度图扔到gray里面去.
所谓灰度图大致是这样一个东西,每个像素是[0,255]的整数,0表示全黑,255表示全白中间的数值表示不同深浅(亮度)的灰色,数越小颜色越深(越暗).
然后把gray用阈值threshold处理下(二值化)得到非黑即白的图像binimg
然后参考上面那张纸,把非黑即白的图像转换成二进制数组 存入arr
我们得到了output.bin 二进制文件(它就是那个OLED能播放的视频了)每1KB就是一个图像
把它通过filezilla给copy到树莓派上,然后就可以开始玩耍C语言和CMake辣(下篇 内容有些多 明天继续更新)