樹(shù)莓派入坑筆記(1.中)
0到3在上篇里面 "樹(shù)莓派入坑筆記(1.上)"

4:Video to Binary convert
上篇已經(jīng)大概說(shuō)完硬件了,中篇說(shuō)下如何把一個(gè)視頻處理成用于OLED輸出的二進(jìn)制數(shù)據(jù),有相關(guān)python基礎(chǔ)閱讀效果更佳.
我們要做的事情,本質(zhì)是一大串圖像處理的問(wèn)題,用腳本批量操作是比較方便的,可以用matlab或者python.我用的python opencv.當(dāng)然,網(wǎng)上有現(xiàn)成的圖片轉(zhuǎn)oled數(shù)據(jù)工具可以下載,不過(guò)那工具一次似乎只能轉(zhuǎn)換一張圖片,實(shí)在沒(méi)有腳本來(lái)的方便,而且還可能有顯示亂碼的問(wèn)題.
雖然樹(shù)莓派上有自帶的python?但是這些操作不建議在樹(shù)莓派上完成,一個(gè)最直接的原因是比電腦要慢.
先看下128像素*64像素的OLED能輸出的圖像數(shù)據(jù)是怎么儲(chǔ)存的

下面直接說(shuō)代碼
需要電腦上有numpy庫(kù)和opencv-python庫(kù).不會(huì)的私信我(或者b站up主@佩爾方程)
先從視頻構(gòu)造VideoCapture對(duì)象(假設(shè)我們的bad apple視頻和下面腳本放在同一目錄下,且重命名為video.mp4),打開(kāi)一個(gè)文件f作二進(jìn)制輸出.
查手冊(cè)知captrue.read()返回值為二元組(ret,frame),如果視頻沒(méi)有處理完,ret為true,frame為當(dāng)前這幀的圖像對(duì)象.如果視頻處理完了,ret為false,訪問(wèn)frame會(huì)出錯(cuò).
那么ok,如果處理完了,跳出循環(huán)關(guān)閉文件,洗洗睡了.
假定視頻沒(méi)有處理完
先開(kāi)一個(gè)數(shù)組arr 置零以存儲(chǔ)這一幀的處理結(jié)果
先把原理那幀圖像用resize函數(shù)改個(gè)大小扔到img里面去.
然后把img用cvtColor轉(zhuǎn)灰度圖扔到gray里面去.
所謂灰度圖大致是這樣一個(gè)東西,每個(gè)像素是[0,255]的整數(shù),0表示全黑,255表示全白中間的數(shù)值表示不同深淺(亮度)的灰色,數(shù)越小顏色越深(越暗).
然后把gray用閾值threshold處理下(二值化)得到非黑即白的圖像binimg
然后參考上面那張紙,把非黑即白的圖像轉(zhuǎn)換成二進(jìn)制數(shù)組 存入arr
我們得到了output.bin 二進(jìn)制文件(它就是那個(gè)OLED能播放的視頻了)每1KB就是一個(gè)圖像
把它通過(guò)filezilla給copy到樹(shù)莓派上,然后就可以開(kāi)始玩耍C語(yǔ)言和CMake辣(下篇 內(nèi)容有些多 明天繼續(xù)更新)