使用OLED0561制作一个视频播放器

使用OLED屏制作视频播放器

 

原帖地址:

使用OLED0561制作一个视频播放器 - CAWCAW的意思是鸦叫声,Guaik的Logo是一只长相奇特的乌鸦。icon-default.png?t=M0H8https://caw.guaik.io/d/22-oled0561

在学习完USART串口,I2C控制OLED显示屏后想做个小作品练练手,一开始想着转码一个电影用OLED播放下看看,写着写着就跑题了,其实做一个能播放摄像头视频数据的播放器也不错。

import cv2 as cv
from PIL import Image
import numpy as np
import serial
import time

def convert2bitmap(img):
    # 将图像转换成灰度图
    black_img = img.convert("L")
    bdata_list = list(black_img.getdata())
    threshold = 128
    # 将灰度图转换为单色位图,值小于128的转换为0,其他的转换为1
    bvalue_list = [0 if i < threshold else 1 for i in bdata_list]
    arr = np.array(bvalue_list)
    # 将数组数据转换成64行128列的矩阵
    arr = arr.reshape((64, 128))
    data = []
    # 转换成OLED0561可显示的数据(左上到右下,高位在下边)
    for m in range(0, 8):
        for i in range(0, 128):
            col = arr[:, i]
            a = 0
            for j in range(0, 8):
                a |= col[m*8+j] << j
            data.append(a)
    return data

def worker():
    # 初始化串口(串口号需要根据实际值进行修改)
    s = serial.Serial("COM10", 115200)

    # 打开默认摄像头设备
    capture = cv.VideoCapture(0)

    while True:
        # 读取摄像头一帧数据
        ret, frame = capture.read()
        # 将图像设置为128 * 64大小(OLED屏幕为128 * 64)
        frame = cv.resize(frame, (128, 64))
        # 将帧数据转换成图像数据
        img = Image.fromarray(frame)
        # 将图像数据转换成OLED
        bitmap = convert2bitmap(img)
        # 将数据写入串口
        s.write(bitmap)
        # 这里加一些延迟,不然OLED屏幕闪的厉害
        time.sleep(0.3)
        cv.imshow("frame", frame)
        # 延迟1ms后切换到下一帧图像
        cv.waitKey(1)

if __name__ == "__main__":
    worker()

开源地址

Gitee:

https://gitee.com/GuaikOrg/oled_player

Github:

https://github.com/GUAIK-ORG/oled_player

在主目录下video.py文件为视频采集和转码并通过串口发送给stm32的上位机程序

build目录下的build_pro.hex可烧录到stm32中。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值