万物皆可Badapple,坏苹果这个黑白影绘PV由于只有黑白两色,而且画面富有动感,很受各路电子大神的喜爱。它在STM32上的显示早就烂大街了,我做的也就是一点简单的整合还有移植。

目录

  • 所用软硬件
  • BadApple图片帧数据的提取
    • 视频帧率更改
    • 提取帧序列
    • 转成二进制数据
  • 图像的显示

所用软硬件

正点原子潘多拉开发板,RT-Thread Studio,Matlab,格式工厂

BadApple图片帧数据的提取

视频帧率更改

STM32显示Badapple其实就是显示图片而已,只要图片刷新够快就能做到动画效果。要显示图片我们就先要把视频按帧提取图片。
首先要做的是改一下视频的帧率,通常下载的原视频是30帧,硬件机能有限,用不了这么多。我们用格式工厂选择将视频转码成mp4,在输出配置中更改每秒帧数,十几帧就够用了。

提取帧序列

有了合适的视频源,我们就要按帧提取图片了。这里我决定用Matlab,比较快也比较方便,当然PR等视频剪辑软件也是自带提取帧序列的功能的。这里直接上代码。

clc
clear
apple='F:\badapple\badapple.mp4';
obj = VideoReader(apple);
for i=1:2628 %视频3分39秒,每秒12帧badApple = read(obj,i);imwrite(badApple,strcat('F:\badapple\badapple\',num2str(i,'%04d'),'.','jpg'));
end

这里要注意输出是命名一定要是%04d,即四位整数,这样命名才能是0001.jpg,不然若是写成了1.jpg的话后面顺序会乱。输入输出路径大家可以根据自己的情况设置。

转成二进制数据

由于硬件性能较弱,图片在STM32上转码会拖慢处理速度,因此可以选择直接将图片转成二进制数据,让板子读到数据就能直接发送给屏幕。这里选择使用Image2Lcd工具。
格式选择 .bin,水平扫描,16位真彩色(板载屏幕所需格式),由于图片太大会降低显示速度,这里选择长200宽150。选择其中一张图片,选择批量转换即可。

转换完成得到数千张.bin格式的图像数据,要往SD卡里移动都很费时间,在板子里挨个打开关闭去读也费时,因此要将其合并为一个文件。

  1. 将存放着bin数据的batch文件夹放到F盘,当然其他盘也可以。
  2. 按win+R输入cmd,打开cmd窗口。
  3. 按行输入如下代码
 F:cd F:\ batchtype *.bin>badapple.bin

即可将所有bin文件合并成一个名叫badapple.bin 的文件。文件放到sd卡根目录,至此图像数据处理完成。

图像的显示

首先RT-Thread Studio新建潘多拉工程,添加lcd,sd卡,文件系统功能。都是RT-Thread setting一键添加的,就不多说了,代码如下。

#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <drv_lcd.h>
#include <rtdbg.h>
#include <dfs_fs.h>
#define number 200*150*2
//图片长200宽150
int main(void)
{if (dfs_mount("sd0", "/", "elm", 0, 0) == 0){rt_kprintf("Filesystem initialized!\n");}else{rt_kprintf("Failed to initialize filesystem!\n");}int fd = -1;int length=-1;fd = open("badapple.bin", O_RDONLY);uint8_t *buffer = NULL;buffer = rt_malloc(number);//创建数据缓冲区for (int j = 0; j < 2628; j+=2)  //由于屏幕刷新实在太慢,只好抽帧了。{lseek(fd,number*j,0);//文件偏移,以读取下一段数据length = read(fd, buffer,number);lcd_show_image(20, 45, 200,150,buffer);}return RT_EOK;
}

基于RT-Thread IoT STM32潘多拉开发板的Badapple显示。相关推荐

  1. 潘多拉开发板——emwin5.44裸机移植记录(ST7789驱动)

    一.emwim5.44的获取 1.打开STM32CubeMX,通过主界面help-Update Setting查看 点击后在弹出的界面可以看到路径,以我的电脑为例,可以找到以下的文件夹 正点原子的潘多 ...

  2. 一个工程师对潘多拉开发板的使用体验

    这块开发板刚上市的时候就买了,见图片. 先看看它上面的资源: 硬件看起来挺牛的是吧! 下面看看其提供的教程,即软件资源. 裸机例程代码 : RT thread代码例程: 大家可以看到,这块板子上绝大多 ...

  3. 潘多拉开发板STM32L475之LCD与GBK(含GB2312)字体显示

    一.GBK字体的内码获取 #include <stdio.h> #include <stdint.h> int main(void) { uint8_t *str=" ...

  4. 基于rt thread smart构建EtherCAT主站

    我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开.rt thre ...

  5. 如何从零开始开发一款嵌入式产品(20年的嵌入式经验分享学习,来自STM32神舟系列开发板设计师的总结)

    转载: 来源:www.armjishu.com 作者:jesse 我的另一篇文章:<STM32嵌入式入门必看之文章-----介绍非常详细!(学STM32的理由!!!!)>http://ww ...

  6. 基于DE2-115 FPGA开发板的VGA显示

    文章目录 一.VGA简介 二.基于DE2-115 FPGA开发板的VGA显示 一.VGA简介 VGA的全称是Video Graphics Array,即视频图形阵列,是一个使用模拟信号进行视频传 输的 ...

  7. 【嵌入式08.1 - 实验】基于STM32F103C8T6开发板和OLED显示学号姓名+滑频显示

    目录 一.题目要求 二.OLED简介 (一)通信方式 (二)接线方式 (三)应用简介 三.OLED显示姓名学号 (一)环境准备 (二)配套资料包下载 (三)取字模 (四)代码撰写 (五)编译烧录 (六 ...

  8. Yeelink平台使用——远程控制 RT Thread + LwIP+ STM32

    1.前言     [2014年4月重写该博文]     经过若干时间的努力终于搞定了STM32+LwIP和yeelink平台的数据互通,在学习的过程中大部分时间花在以太网协议栈学习上,但是在RT Th ...

  9. rt smart操作系统在“正点原子-阿尔法”开发板开箱使用

    1.准备 正点原子阿尔法linux开发板,SD卡,网络,USB线.由于正点原子的开发板和ART-PI-smart开发板使用的是一样的MPU,所以可以运行ART-PI-smart的程序. 下载ART-P ...

最新文章

  1. TSNE算法是什么?该算法有什么缺陷?
  2. iOS 开发中的多线程
  3. 挨踢脱口秀精选集汇总
  4. border绘制三角形
  5. JavaFX自定义控件– Nest Thermostat第3部分
  6. css垂直居中那点事
  7. python——asyncio模块实现协程、异步编程(三)
  8. JS基础9-BOM常用对象(window和history)
  9. 以为GAN只能“炮制假图”?它还有这7种另类用途
  10. java 生日 计算_java根据生日计算当前年龄,精确到月
  11. 安徽省2012年下半年计算机水平考试(二级 c语言程序设计),安徽省计算机等级级考试真题C语言2012年12月.doc...
  12. mysql触发器信号给qt_利用回调函数实现DLL与Qt主程序的数据交互,进一步实现对Qt主程序中的信号触发 - zcabcd123的专栏 - 博客频道 - CSDN.NET...
  13. qq企业邮箱 pop3服务器是什么意思,腾讯qq端口是什么? QQ企业邮箱POP3SMTP设置
  14. 评测|抢鲜体验飞凌Linux版LS1028A系列嵌入式开发板
  15. finereport帮助文档中期学习总结
  16. 荣耀笔记本linux版拆机,荣耀MagicBook Pro 16.1拆机有惊喜,官方都没提,居然能拓展...
  17. OneDrive,在云端
  18. 十年磨一剑,你要的低代码平台在这里
  19. 德普测试仪EOL软件,德普电气 E系列动力电池充放电测试设备
  20. (一)Ubuntu安装详细教程(从镜像制作到NVIDIA驱动安装全流程)——超详细的图文教程

热门文章

  1. CodeForces - 652C Foe Pairs
  2. 记录新手的一次安装ArchLinux的经历
  3. Redis的持久化技术原理及选型
  4. 奔三了,悲催的IT职业生涯仍然没找到方向
  5. List转JSONArray和JSONArray转List
  6. HOOPS/QT集成指南
  7. 网络对抗作业 一------翟一鸣
  8. python计算工资_编写Python代码计算工资总额,包括Overtim
  9. 稻盛和夫:如何调动员工的积极性
  10. 安卓情景模式开发-控制GPS/WIFI/蓝牙/飞行模式/控制静音/音量/振动