单元三

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

任务场景:拍照并保存文件——图像输入
任务场景:拍照并保存文件——图像输入

一、任务目标

把摄像头画面变成文件:按 B1 拍照保存,完整程序还能按 B2 列出已保存的 jpg。

二、我们要学什么

  • 学习要点:图像输入|预览、拍照、列出文件
  • 本课过关:能完成:说出图像输入是预览、拍照、写入文件这三步;载入编程体验,指出彩屏同步显示摄像头画面,按 B1 保存「序号.jpg」并在屏上显示文件名;再运行完整程序,指出按 B2 会关掉预览、清屏并列出含 jpg 的文件名。
  • 示例对齐:编程体验对应 「十学期兴趣课程/学期5/2-1-1 简易相机-拍照并保存文件」;完整程序对应 「十学期兴趣课程/学期5/2-1-2 简易相机-显示图片文件名」。

三、本节要点

本课要认识图像输入:画面先在彩屏上预览,再写成 jpg。重难点是分清两套——编程体验按 B1 连拍并显示文件名;完整程序加 B2 切换预览/文件列表,且只有正在预览时 B1 才拍照。要点对齐「图像输入|预览、拍照、列出文件」。

1读场景明确真实任务
2对要点图像输入|预览、拍照、列出文件
3载入运行官方积木/代码

四、解题思路

任务:用两套程序认识图像输入。编程体验按 B1 拍照保存;完整程序再按 B2 列出 jpg 文件名。请对照彩屏 TFT。

本课主要用到:摄像头;彩屏 TFT;B1、B2 按键。

  1. 1创建 240×240 摄像头,循环预览画面。
  2. 2编程体验按 B1 拍摄「序号.jpg」,屏上显示文件名,序号加 1。
  3. 3完整程序用开关变量决定现在是预览还是看列表。
  4. 4按 B2 切换:关掉预览则清屏,列出含 jpg 的文件名。
  5. 5只有正在预览时按 B1 才拍照保存。

流程示意

创建摄像头并预览体验B1拍照显示名完整用开关变量B2列出jpg文件预览时才允许拍照

五、图形块功能讲解

下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。

图形块分类作用本课用法
创建摄像头(简易)
板载智能快速打开摄像头。两套都创建 240×240 摄像头,作为后面预览和拍照的来源。
赋值
变量给变量写入新值。体验给序号赋 0;完整程序给序号赋 -1,并给「显示摄像头」赋真。
显示摄像头画面
显示预览摄像头取景。循环里把 capture 显示到彩屏。完整程序的 sync 写成「显示摄像头」变量。
精确图像数据
板载智能获取识别细节数据。取出当前帧,供预览或 snapshot 使用。
拍摄保存
板载智能拍摄一张照片保存。按 B1 时把画面保存为「序号.jpg」。
拼接文字
文本把多段文字连成一句。把序号和「.jpg」拼成文件名。
数字转文字
文本把数字变成可显示的字符串。序号要先变成文字,才能拼进文件名并显示。
取变量
变量读取变量当前值。拍照、显示文件名时取出当前序号。
屏幕显示图像
显示把图像显示到屏幕。拍完后把这张 jpg 再显示到彩屏上。
显示图案或文字
显示按设定时间显示图案或字符串。在彩屏中间写出文件名,确认存成了哪一张。
显示是否可用
显示查询显示设备是否就绪。写屏前确认显示通道可用,再 write。
延时
控制暂停指定时间,常用于动画节奏或等待。拍完后停约 1 秒,方便看清文件名。
math selfcalcu
其它本课程序中用到的积木,载入后可在工具箱中对照名称查看。每次拍照后序号加 1,下一张文件名才会变。
清屏
显示清空当前显示内容。完整程序按 B2 关掉预览时先 fill 清屏,再写文件列表。
列表排序
列表对列表排序。完整程序对 listdir 的结果按文字排序,再筛选 jpg。
列出文件
文件列出目录中的文件名。完整程序取出当前目录文件名,供列表显示。
遍历列表
控制依次取出列表中每一项并执行循环体。完整程序逐个查看文件名。
计数循环范围
控制生成一段整数范围,常配合 for 循环。完整程序用 range 按下标遍历文件列表。
三角函数列表
数学对列表做三角运算相关处理。配合生成 0、1、2… 下标,用来排文件名的行位置。
比较
逻辑比较两个值(大于/等于/小于等),得到真或假。完整程序判断文件名里有没有 jpg,以及现在是否正在预览。
查找文字
文本在字符串中查找子串位置。完整程序在文件名中查找「jpg」。
取列表项
列表按位置取出元素。按位置取出一个文件名,写到彩屏对应行。
TFT 显示图案/文字
显示在彩屏显示内置表情或文字并停留。完整程序把每个 jpg 文件名显示在 y=行号×40 的位置。
四则运算
数学加、减、乘、除等运算。完整程序用行号×40 计算文件名的纵坐标。
选择颜色
显示为彩灯/屏幕指定颜色值。完整程序列表文字用白色写出。
并且/或者
逻辑组合多个条件。完整程序:B1 被按下并且正在预览,才允许拍照。

六、知识点讲解

图像输入把摄像头看到的画面变成可保存的文件:先预览,再拍照写入 jpg,必要时再列出文件名确认已经存上。
知识点本课怎么理解
预览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。

八、课堂练习

先完成两道正误判断,再做其余题目;选出后点「检查」。

  1. 判断:编程体验按 B1 会把画面保存为「序号.jpg」,并在彩屏显示这个文件名。

  2. 判断:编程体验按 B2 就会列出全部 jpg 文件名。

  3. 本课说的「图像输入」三步是?

  4. 完整程序按 B2 的作用是?

  5. 完整程序在未预览时按 B1 会?

九、本节小结

本课认识图像输入。编程体验按 B1 拍照保存;完整程序还能按 B2 列出 jpg 文件名。