开发板连续显示图片

2023-10-27

本文分享自中移OneOS微信公众号《万耦中的二次元世界!》,作者:小M哥。

BAD APPLE原本是东方游戏里的一首歌曲,后来被加了一个MAD,由于MAD非常惊艳华丽,使得BAD APPLE被大家喜爱。

在程序员圈子里,有一个传言:“有屏幕的地方,就应该有bad apple”。于是乎,不管是示波器、点阵屏,还是液晶显示器,都表演起了刷bad apple的视频。

既然万耦开发板上也有屏幕,那么就应该满足“有屏幕的地方就应该有bad apple”的魔咒。

// 基础知识

什么是视频?

视频(Video)泛指将一系列静态影像以电信号的方式加以捕捉、记录、处理、储存、传送与重现的各种技术。

连续的图像变化每秒超过24帧(frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;

看上去是平滑连续的视觉效果,这样连续的画面叫做视频。

什么是视觉暂留原理?

视觉暂留(Persistence of vision)现象是光对视网膜所产生的视觉在光停止作用后,大脑神经网络中仍保留其影像0.1-0.4秒左右的图像,电影电视的拍摄和放映就是根据这个原理。

原因是视神经的反应速度造成的。

划重点:快速连续地播放图片,由于视觉暂留的原理,给人的感觉就是在播放视频。

实现方案

根据上面的基础知识,首先需要在万耦开发板上实现图片的显示。

要刷bad apple的视频,肯定需要很多张图片,那么就要解决图片从哪儿来、图片存在哪儿的问题。

先来计算一下一张图片的数据大小,万耦开发板上屏幕是1.3寸240x240像素的TFT屏幕,每一个像素点是16位的,即2个字节。那么一张图片的数据大小就是:240*240*2= 115200,即112.5kB。

按照1秒钟5张图片的速度来播放,这种情况下是能感觉到卡顿的,最好是1秒钟10张图片,能取得较流畅的效果。我们就按照1秒钟5张图片来计算,那么播放1秒钟的视频需要的存储空间为:112.5*5 = 562.5kB。

万耦开发板上的微处理器芯片是STM32L475VGT6,128kB RAM/1024kB Flash,除开系统本身占用的Flash空间之外,应该也就还剩余六七百kB的Flash空间,按照上面计算的存储空间要求,也就能存下不到2秒的视频图片。把图片存在芯片内部的Flash上,这个方案可能就行不通了。

内部的Flash存不下,万耦开发板上还有8MB的外部SPI Flash,计算一下能存多长时间的视频:8*1024/562.5=14.56秒。这才十几秒的视频,满足不了我们的远大理想。

OneOS有非常高效的驱动框架,带来了稳定易用的好处,但是丝毫没有影响性能。 

这就带来了另外一个实现思路,图片数据放在电脑上面,通过串口以921600的高速波特率将图片数据实时发送到万耦开发板,万耦开发板收到数据后再实时显示出来,只要接收处理数据的速度够快、显示图片的速度够快,就能播放出视频来。由于是在线实时显示,不管多长时间的视频都可以播放出来,即便是个美国队长的电影,也没问题。 

视频文件的转换

上面已经将实现方案大致定下来了,现在来按照既定思路实现以下。

首先去网上找到bad apple的视频,最好是高清的视频,下载到本地,因为我们需要先把视频转换成图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开发板连续显示图片 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 按成员序列化

    我已经实现了template
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 重载<<的返回值

    include
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 如何做好nodejs服务在服务器上的安全防护?

    Web服务器安全问题仍然是IT部门最关心的问题之一 因为频发的网络攻击已被证明 由于存在托管敏感数据 Web服务器是一个组织中最容易被黑客针对攻击的地方 因此 本篇文章结合nodejs服务对如何提高Web服务器安全性给出了下面几条提示 一
  • 2023蓝桥杯C++A组题解(第十四届)

    今年广东省三中游 按New Oj估分 前5题估分17 第1题 3 4 5题暴力 第2题 B dfs写错了 第7题 G 并查集 多了个以前没见过的要求 找不到思路 面向爆零选手 水平有限 将就着看 有空再补充后5题 目录 吐槽 A 2067
  • Vue全家桶(四)之ES6模块化与webpack打包

    Vue全家桶 Vue全家桶 地址 Vue全家桶 一 之基础指令 https blog csdn net m0 55990909 article details 123917809 Vue全家桶 一 之常用特性 https blog csdn
  • Air32

    Air32 合宙Air001单片机内部FLASH读写示例 代码已经通过测试 开发环境KEIL MDK 5 36 测试代码 void FLASH RdWrTest void uint32 t Address uint32 t PageRead
  • vue + ant design vue 搭配 less 动态自定义主题颜色

    今天搞了一下午 终于搞成功了 分享给大家看看 思路解析 less 提供一个 modifyVars 可以修改浏览器中 less 文件里的变量 所以我们需要在浏览器端引入 less js 需要引入一个 less 文件 其中包含要修改的变量 但是
  • yum install net-tools安装报错could not resolve host: mirrorlist.centos.org

    Could not retrieve mirrorlist http mirrorlist centos org release 7 arch x86 64 repo os infra stock error was 14 curl 6 C
  • 移远EC600S-CN (3) - HTTP(S)应用GET请求POST请求,HTTP接入OneNET物联网云平台

    移远EC600S CN 使用AT指令HTTP连接GET请求POST请求 并接入OneNET物联网云平台 实现HTTP对物联网设备的接入 同样也适用于 EC200S EC200S不支持QuecPython 体积比EC600S略大 但便宜很多
  • Ubuntu 命令行安装android studio

    安装 sudo apt add repository ppa paolorotolo android studio sudo apt get update sudo apt get install android studio 创建桌面快捷
  • Unity 最新UnityWebRequest下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享

    Unity 最新UnityWebRequest下载网络资源 支持断点续传 多文件同时下载 同时显示下载进度 和 显示网速 今天贴出来和大家分享 显示网速图片 附上案例链接 可下载 https download csdn net downlo
  • 【代码重构 & JDT】遍历AST,获取每个节点的所有直接子节点

    public class DataNode public ASTNode node 所代表的的AST节点 public int label 编号 public List
  • ORB特征提取与匹配

    ORB特征是目前最优秀的特征提取与匹配算法之一 下面具体讲解一下 特征点的检测 图像的特征点可以简单的理解为图像中比较显著显著的点 如轮廓点 较暗区域中的亮点 较亮区域中的暗点等 ORB采用FAST features from accele
  • 【编码】使用JavaScript做中文编码转换

    背景 用git bash跑curl命令的时候 会碰到中文无法输入or无法正常工作的情况 这里介绍先把中文转码 就可以正常使用了 这里介绍JavaScript的方法 1 在url地址上的GET参数是中文时 使用 console log enc
  • Android 13 - Media框架(9)- NuPlayer::Decoder

    这一节我们将了解 NuPlayer Decoder 学习如何将 MediaCodec wrap 成一个强大的 Decoder 这一节会提前讲到 MediaCodec 相关的内容 如果看不大懂可以先跳过此篇 原先觉得 Decoder 部分简单
  • Selenium JSON通信协议

    JSON wire protocol JSONWP 是WebDriver开发者编写的一种通信机制 这个通信协议是一个预定义的特殊设置 通过RESTful API暴露标准端口 WebDriver和JSONWP目的是通过Firefox driv
  • 7-3 成绩等级

    7 3 成绩等级 给出一个成绩 要求输出成绩等级 A B C D E 90分以上为 A 80到89分为 B 70到79分为 C 60到69分为 D 60分以下为 E 输入格式 在一行输入一个整数n n lt 100 输出格式 在一行中输出成
  • 视频汇聚/视频云存储/视频监控管理平台EasyCVR添加萤石云设备详细操作来啦!

    安防视频监控 视频集中存储 云存储 磁盘阵列EasyCVR平台可拓展性强 视频能力灵活 部署轻快 可支持的主流标准协议有国标GB28181 RTSP Onvif RTMP等 以及支持厂家私有协议与SDK接入 包括海康Ehome 海大宇等设备
  • QT With OpenGL(延时着色法)(Deferred Shading)

    文章目录 1 创建G Buffer帧缓存 2 修改各类型物体的着色器 3 测试G Buffer 4 使用G Buffer生成场景 5 添加高光项 1 如果为光源物体 则不进行光照结果计算 2 对高光项进行高斯模糊 3 泛光合成 更多 光体积
  • 蓝桥杯505--数字三角形

    题目描述 上图给出了一个数字三角形 从三角形的顶部到底部有很多条不同的路径 对于每条路径 把路径上面的数加起来可以得到一个和 你的任务就是找到最大的和 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数 此外 向左
  • 【数据库课程设计】企业库存管理系统

    作者 何翔 学院 计算机学院 学号 04191315 班级 软件1903 完整资料 https download csdn net download HXBest 72361220
  • 开发板连续显示图片

    本文分享自中移OneOS微信公众号 万耦中的二次元世界 作者 小M哥 BAD APPLE原本是东方游戏里的一首歌曲 后来被加了一个MAD 由于MAD非常惊艳华丽 使得BAD APPLE被大家喜爱 在程序员圈子里 有一个传言 有屏幕的地方 就