单元三
第9课 拍照并保存文件——图像输入

一、任务目标
把摄像头画面变成文件:按 B1 拍照保存,完整程序还能按 B2 列出已保存的 jpg。
二、我们要学什么
- 学习要点:图像输入|预览、拍照、列出文件
- 本课过关:能完成:说出图像输入是预览、拍照、写入文件这三步;载入编程体验,指出彩屏同步显示摄像头画面,按 B1 保存「序号.jpg」并在屏上显示文件名;再运行完整程序,指出按 B2 会关掉预览、清屏并列出含 jpg 的文件名。
- 示例对齐:编程体验对应 「十学期兴趣课程/学期5/2-1-1 简易相机-拍照并保存文件」;完整程序对应 「十学期兴趣课程/学期5/2-1-2 简易相机-显示图片文件名」。
三、本节要点
本课要认识图像输入:画面先在彩屏上预览,再写成 jpg。重难点是分清两套——编程体验按 B1 连拍并显示文件名;完整程序加 B2 切换预览/文件列表,且只有正在预览时 B1 才拍照。要点对齐「图像输入|预览、拍照、列出文件」。
四、解题思路
任务:用两套程序认识图像输入。编程体验按 B1 拍照保存;完整程序再按 B2 列出 jpg 文件名。请对照彩屏 TFT。
本课主要用到:摄像头;彩屏 TFT;B1、B2 按键。
- 1创建 240×240 摄像头,循环预览画面。
- 2编程体验按 B1 拍摄「序号.jpg」,屏上显示文件名,序号加 1。
- 3完整程序用开关变量决定现在是预览还是看列表。
- 4按 B2 切换:关掉预览则清屏,列出含 jpg 的文件名。
- 5只有正在预览时按 B1 才拍照保存。
流程示意
五、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 板载智能 | 快速打开摄像头。 | 两套都创建 240×240 摄像头,作为后面预览和拍照的来源。 |
![]() | 变量 | 给变量写入新值。 | 体验给序号赋 0;完整程序给序号赋 -1,并给「显示摄像头」赋真。 |
![]() | 显示 | 预览摄像头取景。 | 循环里把 capture 显示到彩屏。完整程序的 sync 写成「显示摄像头」变量。 |
![]() | 板载智能 | 获取识别细节数据。 | 取出当前帧,供预览或 snapshot 使用。 |
![]() | 板载智能 | 拍摄一张照片保存。 | 按 B1 时把画面保存为「序号.jpg」。 |
![]() | 文本 | 把多段文字连成一句。 | 把序号和「.jpg」拼成文件名。 |
![]() | 文本 | 把数字变成可显示的字符串。 | 序号要先变成文字,才能拼进文件名并显示。 |
![]() | 变量 | 读取变量当前值。 | 拍照、显示文件名时取出当前序号。 |
![]() | 显示 | 把图像显示到屏幕。 | 拍完后把这张 jpg 再显示到彩屏上。 |
![]() | 显示 | 按设定时间显示图案或字符串。 | 在彩屏中间写出文件名,确认存成了哪一张。 |
![]() | 显示 | 查询显示设备是否就绪。 | 写屏前确认显示通道可用,再 write。 |
![]() | 控制 | 暂停指定时间,常用于动画节奏或等待。 | 拍完后停约 1 秒,方便看清文件名。 |
![]() | 其它 | 本课程序中用到的积木,载入后可在工具箱中对照名称查看。 | 每次拍照后序号加 1,下一张文件名才会变。 |
![]() | 显示 | 清空当前显示内容。 | 完整程序按 B2 关掉预览时先 fill 清屏,再写文件列表。 |
![]() | 列表 | 对列表排序。 | 完整程序对 listdir 的结果按文字排序,再筛选 jpg。 |
![]() | 文件 | 列出目录中的文件名。 | 完整程序取出当前目录文件名,供列表显示。 |
![]() | 控制 | 依次取出列表中每一项并执行循环体。 | 完整程序逐个查看文件名。 |
![]() | 控制 | 生成一段整数范围,常配合 for 循环。 | 完整程序用 range 按下标遍历文件列表。 |
![]() | 数学 | 对列表做三角运算相关处理。 | 配合生成 0、1、2… 下标,用来排文件名的行位置。 |
![]() | 逻辑 | 比较两个值(大于/等于/小于等),得到真或假。 | 完整程序判断文件名里有没有 jpg,以及现在是否正在预览。 |
![]() | 文本 | 在字符串中查找子串位置。 | 完整程序在文件名中查找「jpg」。 |
![]() | 列表 | 按位置取出元素。 | 按位置取出一个文件名,写到彩屏对应行。 |
![]() | 显示 | 在彩屏显示内置表情或文字并停留。 | 完整程序把每个 jpg 文件名显示在 y=行号×40 的位置。 |
![]() | 数学 | 加、减、乘、除等运算。 | 完整程序用行号×40 计算文件名的纵坐标。 |
![]() | 显示 | 为彩灯/屏幕指定颜色值。 | 完整程序列表文字用白色写出。 |
![]() | 逻辑 | 组合多个条件。 | 完整程序:B1 被按下并且正在预览,才允许拍照。 |
六、知识点讲解
| 知识点 | 本课怎么理解 |
|---|---|
| 预览 | display(capture) 把当前画面送到彩屏 TFT。体验一直预览;完整程序用「显示摄像头」开关,B2 会关掉预览。 |
| 拍照保存 | snapshot 把画面写成「序号.jpg」。体验从 0 起拍;完整程序序号从 -1 起,第一次按下变成 0.jpg。 |
| 文件列表 | 完整程序按 B2 后排序 listdir,找出名字里带 jpg 的项,按行显示在彩屏上。 |
| 按键分工 | B1 负责拍;B2 只在完整程序里负责切换预览和列表。 |
仿真里若看不到实时画面,按 B1 看文件名、完整程序再按 B2 看列表,同样能确认已经保存。
七、编程练习
点「载入」打开 MixVM(board=sant_design)。默认图形化积木;起步程序与积木优先来自 MixGo Sant「十学期兴趣课程/学期5」。语音/视觉在仿真中可能需真机或按键近似;在 Mixly 工具栏点「运行 / 停止」。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。
真机看预览;仿真按 B1 拍照、B2 看文件名。官方示例 2-1-1 / 2-1-2。
正在载入编程环境
正在载入 MixGo SANT 仿真编程环境…
八、课堂练习
先完成两道正误判断,再做其余题目;选出后点「检查」。
判断:编程体验按 B1 会把画面保存为「序号.jpg」,并在彩屏显示这个文件名。
判断:编程体验按 B2 就会列出全部 jpg 文件名。
本课说的「图像输入」三步是?
完整程序按 B2 的作用是?
完整程序在未预览时按 B1 会?
九、本节小结
本课认识图像输入。编程体验按 B1 拍照保存;完整程序还能按 B2 列出 jpg 文件名。

























