1035浏览
查看: 1035|回复: 0

[K10教程] 【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机

[复制链接]
本帖最后由 zoey不种土豆 于 2024-12-27 17:01 编辑

【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图37

Hi,欢迎各位来到行空板 K10的第七课!刚刚过去的圣诞节,你是怎么度过的呢?今天我们就来探索如何利用行空板自制一款 AI 魔法相机,我们能用它来拍下照片,还可以一键添加各种精美的圣诞节装饰效果,制作我们的圣诞照片。

【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图1



任务目标
能用行空板 K10 拍摄人脸照片,记录五官坐标和人脸大小,同时,按下 B 键,能据此添加合适的圣诞贴纸进行装饰。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图2

知识目标
1、 掌握行空板 K10 的拍照存储
2、 掌握行空板 K10 的人脸关键点检测
3、 根据人脸实际大小以及坐标调整贴纸的大小与坐标

材料清单
硬件清单
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图3

软件使用
Mind+编程软件
1.软件压缩包下载:
  * 网页下载:https://download3.dfrobot.com.cn/K10/Mind%2B1.8.0_RC1.0_20241127.zip      * 百度网盘下载:https://pan.baidu.com 提取码: 17d6
  * 夸克网盘 下载
2.将压缩包解压,注意解压过程中关闭杀毒软件,解压后文件夹路径不含中文,解压后文件夹路径不宜过长
3.打开解压后的文件夹,找到 Mind+.exe,双击打开
4.若编译任何代码都报错,建议在解压时将所有后台的杀毒软件退出,将解压出的文件夹放到 C 盘根目录,文件夹的名字改为"win-ia32-unpacked20241012"。文件夹中的 exe 文件,不可直接拖到桌面,要右键-发送到桌面快捷方式。
注:不同行空板 K10 的设备名称可能不同,但都是以 K10 结尾。

软件基础使用
1、 打开 Mind+,切换到上传模式
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图4

2、 加载行空板 K10
基于前面的操作,只需要点击“扩展库”,找到“官方库”下的“行空板”模块点击完成添加,点击返回后,就可以在“指令区”找到行空板 K10,完成行空板 K10 加载。

【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图5

3、连接行空板K10
首先,你需要通过 USB 连接线将行空板 K10连接到计算机。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图6

然后,点击连接设备后,点击 COM7-UNIHIKER K10 进行连接。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图7

注:不同行空板 K10 的设备名称可能不同,但都是以 K10 结尾。

动手实践
接下来一起动手完成今天的课程任务吧。我们将从学会拍照存储开始,逐步学习如何在行空板K10上检测人脸关键点数据,并添加圣诞装饰贴纸。
任务一:拍摄、存储并显示照片
这一部分我们要调用人脸检测指令,将人像拍照存储到 TF 卡中,并在屏幕上进行显示。
任务二:人脸关键点检测
这一部分我们要检测人脸关键点数据,包括五官坐标和人脸大小。
任务三:圣诞贴纸装饰
这一部分我们要实现能够根据五官坐标和人脸大小调整贴纸坐标,使得圣诞装饰效果贴合人脸。

任务一:拍摄、存储并显示照片

1、 硬件搭建
将 TF 卡插入到行空板 K10 卡槽当中,确认使用 USB 连接线将行空板 K10 连接到计算机,

【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图8

2、 软件准备
确认已打开 Mind+,在 Python 图形化模式下出现预设代码,成功加载行空板。接下来就可以编写项目程序了。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图9


3、 编写程序
STEP1:调用人脸检测指令
我们需要先使用指令 显示摄像头画面 指令,在行空板 K10 屏幕上显示摄像头画面。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图10
注:关于摄像头指令,详见知识园地。
开启摄像头之后,我们找到 切换为人脸检测模式 指令,将摄像头切换为人脸检测的模式。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图11

注:关于人脸检测指令,详见知识园地。

STEP2:拍摄、存储并显示照片
我们需要使用事件回调函数,使用 当按键 A 按下 指令,然后使用 后台播放 TF 卡音频() 指令,模拟相机拍照的音效,接着使用 拍照存储到 TF 卡() 指令,将照片拍摄存储到 TF 卡当中。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图12

我们需要在拍摄照片之后,再将内存卡中的照片进行展示,因此,我们需要用一个变量 “拍照” 来判断是否完成了拍照,当拍照完成之后,我们关闭摄像头画面,并用 缓存显示 TF 卡图片()在 X0Y0 指令在屏幕上显示刚拍下的照片。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图13

这样,我们就实现了拍摄、存储照片,并将其显示在屏幕上,完整代码如下图:
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图14

4、 程序执行
STEP1:检查并保证行空板 K10 已连接 Mind+,即在“菜单栏”部分显示 IP;
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图15

STEP2:点击界面右上方的上传到设备按钮;
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图16

STEP3:运行程序,出现摄像头画面,当按下 A 键的时候,拍下照片,并将照片显示在屏幕上,如下图所示:
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图17

任务二:人脸关键点检测
1、 编写程序
STEP1:获取人脸关键点数据
在行空板 K10 中,提供了检测人脸关键点数据的指令,我们可以使用 获取检测到人脸的() 指令,来获取五官坐标以及人脸的大小,同时,我们创建相应的变量来存储人脸的关键点数据。我们将指令封装到函数“人脸关键点检测“中。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图18
注:关于人脸关键点数据检测指令,详见知识园地。

我们要获取到所拍下照片的人脸关键点数据,因此,在事件回调函数“当按下 A 键“ 中,我们需要调用 ”人脸关键点检测“ 函数,获得拍摄照片的人脸关键点数据。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图19

STEP2:显示人脸关键点数据
为了确定圣诞贴纸的位置,我们需要知道前面所获得的人脸关键点数据,因此,我们需要让人脸关键点数据跟随照片一起显示,在上一步,我们已经将人脸关键点的数据存储在相对应的变量之中,因此,我们使用 缓存显示文字()在坐标 X0Y0 字号()颜色() 指令,将数据进行显示,指令如下。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图20

人脸关键点检测模块完整程序代码如下:
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图21

2、程序运行
STEP1:连接行空板 K10
STEP2:点击界面右上方的“上传到设备”按钮
STEP3:按下 A 键,观察屏幕,可以看到人脸关键点数据跟随照片一起显示。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图22

任务三:圣诞贴纸装饰
在这个任务中,我们需要根据五官坐标和人脸大小调整贴纸坐标和大小,使得圣诞装饰效果贴合人像。
1、 编写程序
STEP1:调整贴纸位置
我们以“鹿角贴纸”为例子,我们要根据人脸的不同位置,调整贴纸的坐标。为了确定人脸的位置,我们需要选取前面的一个人脸关键点数据作为参考点。这里,我们选取“左眼”的 X、Y 坐标,来确定 “鹿角贴纸“的所在位置。

【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图23

要注意,在行空板 K10 中,图片的基准点是位于左上角,即图片的 X、Y 坐标实际上是图片左上角所在位置,这能帮助我们更好地调整贴纸坐标。另外,当行空板方向为竖直正向时,屏幕坐标的对应图如下所示。

【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图24

经过调整之后,我们确定了“鹿角贴纸“的 X、Y 坐标以左眼作为参考系的相对坐标位置。X 坐标为(左眼 X-45),y 坐标为(左眼 y-150),程序指令如下所示。

【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图25
STEP2:根据脸的尺寸调整贴纸大小
在实际拍摄中,人脸的尺寸大小是不同的,因此,不能简单地将贴纸作为一张固定尺寸的图片,贴在人脸上,如下图,是同一个贴纸在不同尺寸人脸的效果,可以看到,这是很不自然的效果。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图26

因此,我们需要根据不同人脸的尺寸,调整贴纸的大小。通过 “脸长” 这一参数,对人脸尺寸进行判断,根据不同尺寸的人脸,我们需要有对应不同尺寸的贴纸。在这里,我们依据“脸长”,将脸长分为三个不同的梯度:65-85、85-100、100-115,同时,设置三种不同尺寸的“鹿角贴纸”。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图27

我们使用条件判断语句,对于三个不同尺寸的脸,分别显示不同大小的“鹿角贴纸。需要注意的是,三个不同的尺寸下,贴纸的 x、y 坐标是不同的,需要进行调试,在多次调试之后确定每个尺寸贴纸的最佳 x、y 坐标,相关的程序指令如下。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图28

为了让照片更有氛围,我们需要给图片添加一个圣诞边框,同时,我们设置当按下 B 键时,清除屏幕上人脸关键点数据,并显示圣诞贴纸。为了提高主程序的易读性,我们将上一步切换贴纸的指令集成在“特效”函数中。程序指令如下所示。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图29

效果图如下所示:
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图30

SETP3:随机切换圣诞贴纸
要切换不同的圣诞贴纸,首先我们需要按照上一步的操作,将其他风格的圣诞贴纸也根据不同尺寸的脸调整大小,同时调试坐标以使得贴纸更加自然,相关程序如下。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图31
为了能够随机切换不同风格的圣诞贴纸,我们定义一个变量“随机数”,当按下 B 键的时候,“随机数”会在 1-3 中产生一个数,而 1-3 分别代表三种不同风格的圣诞贴纸,完整的程序指令如下所示。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图32

2、 运行程序
点击上传到设备,完成拍照之后,按下 B 键,可以随机切换不同风格的圣诞贴纸,效果如下。
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图33

知识园地
1、 摄像头指令
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图34

2、人脸检测指令

【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图35

3、人脸关键点数据检测指令
【行空板K10基础入门教程】第07课:K10人脸识别AI 魔法相机图36



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail