哪里有屏幕,哪里就有Badapple!--树莓派+OLED

tezr 60cm2020-11-281271 次点击2 人收藏2 人感谢
利用树莓派4B,0.96OLED 播放视频(如badapple)。
环境搭建:
0.开启I2C,并安装SSD1306驱动库。 [在树莓派上使用 SSD1306 OLED 屏幕](https://shumeipai.nxez.com/2019/04/29/use-the-ssd1306-oled-display-on-the-raspberry-pi.html)。 为了让oled播放视频流畅些,可以增加I2C的波特率,可以设置为1000000。
1.树莓派中安装opencv。这个有点麻烦,最好耐心点,建议将opencv_contrib_python-3.4.3.18-cp37-cp37m-linux_armv7l.whl下载到本地后再上传到树莓派进行安装。[在树莓派上安装基于python3的OpenCV](https://zhuanlan.zhihu.com/p/92184435)
2.编写代码。
showVideoOnPi.py
```
import sys
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import cv2
import time # 引入time模块
import Adafruit_SSD1306

def initSSD1306():
#Raspberry Pi pin configuration:
RST = None # on the PiOLED this pin isnt used
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, i2c_address=0x3C)
# Initialize library.
disp.begin()
# Clear display.
disp.clear()
disp.display()
return disp

def process(filepath,disp,width,height,x=0,y=0):
cap = cv2.VideoCapture(filepath)
#处理每一帧
while(True):
success, frame = cap.read()
if success == False:
break
#resize
frame=cv2.resize(frame,(width,height),interpolation=cv2.INTER_AREA)
#灰度
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
picImage = Image.frombytes("L", (128,64), gray.tobytes())
#picImage.show()
disp.image(picImage.convert("1"))
disp.display()
cap.release()

def main():
print(sys.argv)
if(len(sys.argv) == 1):
sys.exit()
start = time.time()
disp = initSSD1306()
process(sys.argv[1], disp ,disp.width, disp.height)
end = time.time()
print(end - start)
if __name__ == "__main__":
main()
```
3. 运行。 python3 showVideoOnPi.py badapple.mp4
收藏 ♥ 感谢
Spoony 小组长 2020-11-28 
趟过 OpenCV 安装坑不容易,收藏了
tezr 60cm 2020-11-28 
@Spoony 还是感谢要前人的努力成果!!

登录注册 后可回复。



GitHub