通过视频帧提取及批量取模转换实现基于STC32的点阵LED动画播放

简介: 通过视频帧图片提取,图片批量裁剪,转换为BMP文件并取模,获得显示屏代码,基于STC32单片机,在8x8点阵LED模块上实现动画播放。

项目内容

动态图片显示

  1. 将目标动图或视频提取为帧图片,可通过 MATLAB 程序实现;

  2. 将帧图片裁剪为目标显示屏的像素比例,如 0.96 英寸 OLED 显示屏的像素为 128x64, 则需将帧图片按照 2:1 的宽高比进行裁剪、对于单个 8x8 点阵则需按照 1:1 进行裁剪,注意选择目标裁剪区域;

  3. 将裁剪过的帧图片转化为灰度图像(以便后面进行二值化),之后进行像素缩小操作,将图片调整至目标显示屏的像素分辨率,最后进行二值化处理,并将处理结果存储为 *.bmp 格式文件;

  4. 将批量保存的 BMP 文件按照帧顺序重命名为 1,2,3... ,之后使用批量取模工具生成相应的 16 进制代码,复制到程序中即可。

详见:哔哩哔哩 bilibili .

或者将帧图片像素缩小至目标显示屏像素,保持彩色状态,存储为 BMP 格式,使用批量取模工具,勾选 转换彩图,调整阈值至适当值(如66%),即可直接生成对应代码。

详见附录。该项目的STC代码见附件。

附录

图片取模

  1. 提取视频或 GIF 动图的帧为图片,可使用 MATLAB 或 GIF Movie Gear 软件

  2. 使用 Image2Lcd 软件批量处理目标帧图片,并生成 BMP 格式图片,以便后面读取二值化数据;

这里推荐使用 广州灵派科技 的 ==OledTools== 软件对图片进行处理,可调整灰度阈值,对于像素点较少的情况,转换效果最佳;缺点是不能进行批量处理。

对于 128x64 像素的转换,各软件均可。批量转换推荐 PictureReader 软件,可批量生成 BMP 文件。

  1. 将BMP图片转化为数模,可使用 CopyLeft By Horse2000 (字模提取)或 PCtoLCD2018 软件.

详见:CSDN博客 . 吾爱破解 www.52pojie.cn .

一些有趣的资源:Wokwi OLED Animation Maker for Arduino 动态图标显示在 128x64 显示屏利用 Arduino 代码。

视频帧提取

clear;
video_file='test.mp4';
video=VideoReader(video_file);
frame_number=video.NumFrames;
for i = 1:5:frame_number
    image_name=strcat('test',num2str((i-1)/5+1)); % 每5帧取一张图
    image_name=strcat(image_name,'.jpg');
    I=read(video,i);  %读出图片
    imwrite(I,image_name,'jpg'); %写入图片
    I=[];
end

详见:知乎 (zhihu.com) .

MATLAB重命名文件的排序问题

可使用 sort_nat 函数解决,注意需要下载安装该函数。

file_path = '';
Tpath = 'Number\'; % target path
img_path_list = dir([file_path '*.bmp']);%图片路径
img_num = length(img_path_list);
sort_nat_name=sort_nat({img_path_list.name});
for k = 1:img_num
    image_name = sort_nat_name{k};%获取图片名称
    image = imread(strcat(file_path,image_name));%读取图片
    imwrite(image,strcat(Tpath,int2str(k),'.bmp'),'bmp'); 
end

详见:CSDN博客 . File Exchange - MATLAB .

图像裁剪

clear;clc;
file_path = ''; % 设定你存放图片的目录
img_path_list = dir(strcat(file_path, '*.jpg')); % 选后缀为 .jpg 的图片
img_num = length(img_path_list); %获得图片数量
for n = 1:img_num 
    image_name = img_path_list(n).name;
    image = imread(strcat(file_path, image_name));
    crop_image = imcrop(image, [323 0, 1080, 1080]); 
    imwrite(crop_image, strcat('Cut/Cut', image_name)); % 保存文件
end

图片像素调整

clear;clc;
numrows = 8; 
numcols = 8;
file_path = ''; % 设定你存放图片的目录 - 当前文件夹
img_path_list = dir(strcat(file_path, '*.jpg')); % 选后缀为 .jpg 的图片
img_num = length(img_path_list); %获得图片数量
for n = 1:img_num 
    image_name = img_path_list(n).name;
    image_n = image_name(1:end-4); % 删除文件后缀
    image = imread(strcat(file_path, image_name));
    RtG_image = rgb2gray(image); % rgb to gray
    RS_image = imresize(RtG_image,[numrows numcols]); 
    BNR_image = imbinarize(RS_image);
    imwrite(BNR_image,strcat('Resize8x8\RS',image_n,'.bmp'),'bmp'); 
end

转载请注明来源,谢谢!
如有任何问题请于本贴留言或联系作者,邮箱 lijinlei0907@163.com

相关文章
|
18天前
|
缓存 人工智能 前端开发
通义千问Qwen3.8‑Flash百万上下文多模态模型深度拆解:图文视频理解、Agent能力、Token计费、代码实操与落地选型
在AI应用大规模落地的阶段,大量业务同时面临三重诉求:百万级超长文档读取、图文混合内容解析、智能体多工具调度,同时又需要控制推理成本、保障高并发低延迟。Qwen3.8‑Flash作为通义千问3.8系列新一代多模态MoE模型,采用全新稀疏专家架构,原生支持100万Token上下文窗口,同时支持文本、图片、视频帧输入,兼顾长文本理解、视觉解析、代码生成与智能体工具调用能力,在推理质量、响应延迟、调用成本之间取得优秀平衡。它的底层架构做了大量创新优化,单Token仅激活少量专家参数,大幅降低推理算力开销,相比前代模型在编码、办公、图文联合推理场景实现能力跃升。很多开发者初次接触这款模型,容易混淆它与
295 0
|
10月前
|
数据采集 人工智能 安全
|
10月前
|
存储 人工智能 Java
面试回答示例篇(重点)
结合黑马《天机AI》项目,详解SpringAI、LangChain4J、RAG、Tool Calling、MCP等核心技术。涵盖智能体设计、大模型选型、私有化部署、流式输出、上下文管理及大模型幻觉解决方案,助力Java开发者快速掌握企业级AI应用开发要点。(238字)
872 0
|
4月前
|
人工智能 数据可视化 API
Claude Code 30+ 斜杠命令全讲解,用好了效率翻 10 倍!
大家好,我是程序员鱼皮。 如今用 Claude Code 的人越来越多了,但我发现很多人的使用方式还是纯聊天,有什么需求就直接打字跟它说。 这当然没问题,AI 模型的能力已经很强了,一般能够理解你的意思。 但其实 Claude Code 内置了很多斜杠命令,输入 / 就能看到完整的命令列表。这些命令覆盖了会话管理、上下文控制、并行协作等方方面面,用好了能省很多事。 虽然现在 Claude Code
388 0
|
12月前
|
前端开发 JavaScript API
JSAR 交互式菜单开发实战:打造沉浸式 3D 导航体验
本文介绍如何使用JSAR框架在Rokid智能眼镜上开发3D交互式菜单系统。通过Babylon.js创建按钮、动态纹理与动画,结合空间计算实现沉浸式导航体验,涵盖多视图切换、信息面板与手势适配,助力打造直观高效的AR界面。
|
7月前
|
人工智能 Linux API
今天早点下班教程!阿里云/本地部署OpenClaw、AI职场提效用法、大模型配置全手册
很多人安装 OpenClaw 后只停留在聊天、试玩功能,却忽略了它最核心的价值——**直接操作电脑、自动完成繁琐工作、7×24 小时充当隐形助理**。它与普通AI最大的区别在于:可以直接读写文件、执行命令、整理资料、生成文案、定时任务、远程控制,把职场人最耗时间的重复劳动全部接管。本文只讲真实可落地、每天都能用的职场效率用法,同时提供 2026 年阿里云、MacOS、Linux、Windows11 完整部署流程,以及阿里云百炼 Coding Plan 免费大模型 API 配置,所有命令可直接复制运行,无多余表述,适合所有职场人士快速上手。
699 0
|
8月前
|
人工智能 运维 自然语言处理
知识管理提效神器:AI开源知识库实操干货全攻略
作为一名常年和技术文档、团队知识库打交道的开发者,试过不少主流的知识管理工具,从重型的商业Wiki到轻量的开源笔记,直到接触到这套AI驱动的开源知识库系统,才真正找到适配中小团队和个人开发者的知识管理解决方案。它没有复杂的部署流程,却把AI能力和知识库的核心需求做了深度融合,用了三个月下来,不管是个人知识沉淀还是团队协作,效率都提升了不少,今天就和大家聊聊这套工具的实操干货和真实使用感受。
1060 3
|
8月前
|
存储 监控 安全
SaaS建站与独立CMS的深度对比:2026年如何为您的企业选择最佳建站路径
本文对比了SaaS建站与独立CMS两种建站模式,从技术门槛、数据控制权、功能定制性和长期成本等角度分析其差异,并提供了基于项目需求和资源的决策路径,帮助读者根据自身业务目标选择最合适的建站方式。
511 4
|
10月前
|
存储 弹性计算 安全
阿里云服务器8核16G价格:全规格实例收费标准与1M-5M带宽活动价格参考
阿里云服务器8核16G配置因较高的配置和云服务器ECS本身卓越的性能和稳定性,成为众多企业用户的首选。当然,该配置的价格也是用户关注的重点。8核16G配置提供了多种实例规格选择,包括经济型e、通用算力型u1、高主频计算型hfc7等,以满足不同企业的需求。目前,8核16G配置的活动价格最低为6581.50元/1年,若选择5M带宽,最低价格则为7621.90元/1年。不同实例规格的价格各异,以下将详细介绍阿里云服务器8核16G配置的最新原价及活动价格。
1340 4
|
机器学习/深度学习 编解码 人工智能
面壁开源多模态新旗舰MiniCPM-V 4.5,8B 性能超越 72B,高刷视频理解又准又快
今天,面壁智能正式开源 8B 参数的面壁小钢炮 MiniCPM-V 4.5 多模态旗舰模型,成为行业首个具备“高刷”视频理解能力的多模态模型,看得准、看得快,看得长!高刷视频理解、长视频理解、OCR、文档解析能力同级 SOTA,且性能超过 Qwen2.5-VL 72B,堪称最强端侧多模态模型。
1092 9