由 沈夜 贡献,Ai-Thinker 进行整理
【Ai-WB2】用0.96寸OLED播放知名艺人打篮球视频
> **使用需要修改 py代码里面的 com端口 为自己的板子,其他代码 不要修改。**
📜 点击展开完整代码
c
**屏幕出现,START 代表已经就绪,**
**启动 python Video2OLED.py**
**就开始投流了**
```
📜 点击展开完整代码
c
**硬件接口**
**i2c 接口**
**scl = 4,**
**sda = 3,**```
**视频展示:** 【【Ai-WB2】用0.96寸OLED播放知名艺人打篮球视频】 [https://www.bilibili.com/video/BV1hBSFYQEQE/?share_source=copy_web&vd_source=d83d0e4a655b1adb813acf66c31fdd57](https://www.bilibili.com/video/BV1hBSFYQEQE/?share_source=copy_web&vd_source=d83d0e4a655b1adb813acf66c31fdd57) **python代码** > import numpy as np > import cv2 > import serial > import time > > #将128\\\*64的二值化图像转换为OLED数组格式 > def img2array(frame): > > \`\`\` > array = np.zeros((8, 128), dtype='uint8') > > for j in range(64): > for i in range(128): > if frame[j]* > 0: > array[j // 8]* = (array[j // 8]*) | (0x01 << (j % 8)) > > return array > \`\`\` > > #打开串口 > serial\\\_port = serial.Serial('COM4', 921600) > > #设置预览窗口 > cv2.namedWindow('img', cv2.WINDOW\\\_NORMAL) > cv2.resizeWindow('img', 128 \\\* 4, 64 \\\* 4) > > #打开视频 > cap = cv2.VideoCapture('打篮球.mp4') > > #记住开始时间 > start\\\_time = time.time() > > while cap.isOpened(): > > \`\`\` > #获取当前时间对应的帧数 > run\\\_time = time.time() - start\\\_time > fps = cap.get(cv2.CAP\\\_PROP\\\_FPS) > frame\\\_number = int(run\\\_time \\\* fps) > > #获取当前帧 > cap.set(cv2.CAP\\\_PROP\\\_POS\\\_FRAMES, frame\\\_number) > flag, img = cap.read() > if not flag: > break > > #帧图像处理 > img = cv2.resize(img, (128, 64)) #修改尺寸 > img = cv2.cvtColor(img, cv2.COLOR\\\_BGR2GRAY) #灰度化 > img = cv2.threshold(img, 170, 255, cv2.THRESH\\\_BINARY)[1] #二值化 > > #预览图像 > cv2.imshow('img', img) > > #转换为数组并使用串口发送 > img\\\_array = img2array(img) > serial\\\_port.write(img\\\_array) > > #等待按键,按q键退出 > key = cv2.waitKey(1) > if key & 0xFF == ord('q'): > break > \`\`\` > > #释放资源 > cap.release() > cv2.destroyAllWindows() > serial\\\_port.close() > 上位机-python代码 视频资源 > [[https://www.123865.com/s/bpGiVv-uiIb?](https://www.123865.com/s/bpGiVv-uiIb?)]([https://www.123865.com/s/bpGiVv-uiIb?](https://www.123865.com/s/bpGiVv-uiIb?))提取码:fwqG > > ---使用需要修改 py代码里面的 com端口 为自己的板子,其他代码 不要修改。
📜 点击展开完整代码
c
**屏幕出现,START 代表已经就绪,**
**启动 python Video2OLED.py**
**就开始投流了**
📜 点击展开完整代码
**硬件接口**
**i2c 接口**
**scl = 4,**
**sda = 3,**视频展示:
【【Ai-WB2】用0.96寸OLED播放知名艺人打篮球视频】
python代码
import numpy as np import cv2 import serial import time
#将128*64的二值化图像转换为OLED数组格式 def img2array(frame):
array = np.zeros((8, 128), dtype='uint8') for j in range(64): for i in range(128): if frame[j]* > 0: array[j // 8]* = (array[j // 8]*) | (0x01 << (j % 8)) return array#打开串口 serial_port = serial.Serial('COM4', 921600)
#设置预览窗口 cv2.namedWindow('img', cv2.WINDOW_NORMAL) cv2.resizeWindow('img', 128 * 4, 64 * 4)
#打开视频 cap = cv2.VideoCapture('打篮球.mp4')
#记住开始时间 start_time = time.time()
while cap.isOpened():
#获取当前时间对应的帧数 run\_time = time.time() - start\_time fps = cap.get(cv2.CAP\_PROP\_FPS) frame\_number = int(run\_time \* fps) #获取当前帧 cap.set(cv2.CAP\_PROP\_POS\_FRAMES, frame\_number) flag, img = cap.read() if not flag: break #帧图像处理 img = cv2.resize(img, (128, 64)) #修改尺寸 img = cv2.cvtColor(img, cv2.COLOR\_BGR2GRAY) #灰度化 img = cv2.threshold(img, 170, 255, cv2.THRESH\_BINARY)[1] #二值化 #预览图像 cv2.imshow('img', img) #转换为数组并使用串口发送 img\_array = img2array(img) serial\_port.write(img\_array) #等待按键,按q键退出 key = cv2.waitKey(1) if key & 0xFF == ord('q'): break#释放资源 cap.release() cv2.destroyAllWindows() serial_port.close()
上位机-python代码 视频资源 [<https://www.123865.com/s/bpGiVv-uiIb?>](https://www.123865.com/s/bpGiVv-uiIb?)提取码:fwqG

