23浏览
查看: 23|回复: 8

[K10教程] 【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上

[复制链接]
【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图2

行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。

主要特点
集成摄像头&内置算法,可进行离线图像检测
集成麦克风&内置算法,可进行离线语音识别
集成扬声器&内置算法,可进行离线语音合成
2.8寸彩色屏幕,数据展示更清晰
集成度高,利于教学
接口丰富,兼容软件多,扩展性好


【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图1

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上

主打:人工智能模块

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图1

猫狗脸检测相关说明

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上

辅助:屏幕显示相关积木

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图1

LED控制模块
【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图2



回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上

知识点:行空板 K10 猫狗脸检测

一、基础硬件与底层原理
1. 硬件支撑
行空板 K10 搭载ESP32-S3 主控,内置专用 NPU 硬件 AI 加速器,搭配板载 200 万像素前置摄像头,无需外接模块、无需联网,本地离线运行猫狗检测算法,纯边缘端计算,无网络延迟、不消耗流量。
配套输出外设:2.8 寸彩色 LCD(实时显示摄像头画面 + 识别框)、RGB 氛围灯、A/B 物理按键、TF 卡存储(可抓拍宠物照片)、扬声器。

2. 算法定位
猫狗检测是 K10 内置四大原生视觉 AI 模型之一,其余三种:人脸检测、移动检测、二维码识别。
识别目标:画面内猫、狗的脸部区域均可识别;
区分逻辑:仅检测宠物脸部存在,无法区分具体品种、无法给猫狗分配独立 ID(和人脸录入识别有本质区别);
运行要求:设备竖直放置(Type-C 接口朝上),横屏摆放会大幅降低识别成功率,甚至完全检测不到目标。

二、猫狗检测完整核心功能
1. 实时画面框选可视化
检测到猫 / 狗脸部时,屏幕摄像头画面会自动叠加绿色矩形识别框圈出宠物脸,直观展示识别区域;移动检测、二维码模式无识别框,仅人脸、猫狗检测支持框选标记。

2. 完整宠物面部数据读取
检测到猫狗后,可实时读取宠物脸全部坐标与尺寸参数,图形化 / 代码均可调用:
基础尺寸:脸部宽度 Width、高度 Length;
坐标信息:脸部中心点 X、中心点 Y;
五官关键点:左眼 XY、右眼 XY、鼻子 XY、左右嘴角 XY。
可基于坐标实现跟随效果、屏幕贴纸、灯光跟随等交互。

3. 状态判断接口
提供专用判断函数,快速判定画面是否存在猫狗:
Mind + 图形化:「是否检测到猫狗」积木,返回布尔值;
Arduino C 代码:ai.isDetectContent(AIRecognition::Cat);
MicroPython:data['cat_flag'],1 = 检测到猫狗,0 = 无目标。

4. 可联动全板载外设做交互
检测触发后可联动所有硬件开发趣味项目:
RGB 彩灯:检测到宠物自动亮对应颜色呼吸灯、闪烁倒计时;
自动抓拍:识别稳定 2 秒自动拍照存入 TF 卡,实现宠物自动相机;
语音播报:检测到猫狗喇叭播放 “发现小猫 / 小狗”;
屏幕交互:显示宠物坐标、弹窗提示、叠加卡通贴纸;
物联网:WiFi 上传宠物到访记录到上位机 / 小程序。

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图1

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上

猫脸检测的几张案例图片

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图6

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图2

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图1

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图3

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图5

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图7

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图4
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上

【花雕动手做】行空板 K10 系列实验之猫狗脸检测的将猫脸相关数据显示在屏幕上
实验开源代码

  1. // 引入行空板K10硬件驱动库,封装屏幕、画布、摄像头、背景画面等全部硬件操作接口
  2. #include "unihiker_k10.h"
  3. // 引入AI视觉识别库,提供NPU初始化、AI模式切换、猫狗目标检测、宠物面部数据读取接口
  4. #include "AIRecognition.h"
  5. // 实例化行空板主控全局对象,所有硬件操作均通过k10调用
  6. UNIHIKER_K10  k10;
  7. // 屏幕旋转参数:2=竖直正向显示,猫狗检测推荐竖屏,横屏识别率会大幅下降
  8. uint8_t       screen_dir=2;
  9. // AI识别专用对象,负责加载视觉算法、检测猫狗、读取面部坐标尺寸数据
  10. AIRecognition ai;
  11. /**
  12. * @brief 上电初始化函数,开发板通电/复位仅执行1次
  13. * 功能:硬件初始化、AI加速器初始化、开启摄像头投屏、切换为猫狗检测模式
  14. */
  15. void setup() {
  16.         k10.begin();                // 初始化开发板底层IO、供电、通信总线等全部硬件外设
  17.         k10.initScreen(screen_dir); // 根据screen_dir参数初始化LCD显示屏,设置屏幕朝向
  18.         ai.initAi();                // 启动ESP32-S3内置NPU硬件AI加速器,加载离线视觉推理模型
  19.         k10.initBgCamerImage();     // 初始化摄像头后台画面渲染功能,支持摄像头画面实时投屏到屏幕
  20.         k10.setBgCamerImage(false); // 初始化阶段临时关闭摄像头画面,避免画面干扰初始化流程
  21.         k10.creatCanvas();          // 创建屏幕绘图缓存画布,绘图先存入缓存再统一刷新,消除屏幕闪烁
  22.         ai.switchAiMode(ai.NoMode); // 临时切换AI为无识别模式,清空上一轮残留AI算法,防止模式冲突
  23.         k10.setScreenBackground(0x000000); // 设置屏幕底层默认背景色为纯黑色
  24.         k10.setBgCamerImage(true);  // 开启摄像头实时画面投屏,屏幕持续显示镜头实时取景画面
  25.         ai.switchAiMode(ai.Cat);    // 切换AI工作模式为【猫狗脸部检测】,启动猫、狗面部识别算法
  26.         k10.canvas->updateCanvas(); // 刷新画布缓存,将初始化完成的界面输出到LCD屏幕
  27. }
  28. /**
  29. * @brief 主循环函数,上电后无限循环执行,程序核心识别逻辑
  30. * 逻辑:每秒检测一次画面,识别到猫狗则在屏幕打印面部长宽、中心XY坐标;无宠物不绘制文字
  31. * delay(1000)为阻塞延时,降低AI读取与屏幕刷新频率,减少硬件性能消耗
  32. */
  33. void loop() {
  34.         // 判断摄像头画面中是否检测到猫或狗的脸部
  35.         // ai.isDetectContent(AIRecognition::Cat) 返回true=识别到猫狗,false=无宠物
  36.         if (ai.isDetectContent(AIRecognition::Cat)) {
  37.                 // 读取宠物脸部纵向高度Length,拼接文字显示在画布第6行,浅黄字体0xFFFFCC
  38.                 k10.canvas->canvasText((String("      猫脸长:") + String(ai.getCatData(AIRecognition::Length))), 6, 0xFFFFCC);
  39.                 // 读取宠物脸部横向宽度Width,画布第7行,浅绿色字体0x99FF99
  40.                 k10.canvas->canvasText((String("      猫脸宽:") + String(ai.getCatData(AIRecognition::Width))), 7, 0x99FF99);
  41.                 // 读取宠物脸部中心点横向坐标CenterX,画布第8行,浅紫字体0xCCCCFF
  42.                 k10.canvas->canvasText((String("猫脸中心坐标X:") + String(ai.getCatData(AIRecognition::CenterX))), 8, 0xCCCCFF);
  43.                 // 读取宠物脸部中心点纵向坐标CenterY,画布第9行,青蓝色字体0x66FFFF
  44.                 k10.canvas->canvasText((String("猫脸中心坐标Y:") + String(ai.getCatData(AIRecognition::CenterY))), 9, 0x66FFFF);
  45.                 // 将画布上所有文字缓存统一刷新输出到实体LCD屏幕
  46.                 k10.canvas->updateCanvas();
  47.         }
  48.         // 延时1000毫秒=1秒,每1秒执行一次识别检测,降低运算负荷
  49.         // 缺点:阻塞式延时,延时期间无法响应按键、灯光等其他硬件逻辑
  50.         delay(1000);
  51. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上

猫脸检测代码解读

一、头文件说明

  1. #include "unihiker_k10.h"
  2. #include "AIRecognition.h"
复制代码

unihiker_k10.h:行空板 K10 硬件库,封装屏幕、画布、摄像头、背景画面等硬件操作;
AIRecognition.h:板载离线 AI 库,负责 NPU 初始化、AI 模式切换、猫狗检测、读取宠物面部坐标尺寸。

二、全局硬件对象

  1. UNIHIKER_K10  k10;
  2. uint8_t       screen_dir=2;
  3. AIRecognition ai;
复制代码

k10:主板总对象,所有屏幕、绘图、摄像头操作都依靠它;
screen_dir=2:屏幕竖直正向显示,猫狗检测必须竖屏摆放,横屏识别效果极差;
ai:AI 视觉专用对象,专门处理猫狗识别相关运算。

三、setup () 上电初始化(仅执行 1 次)
逐行拆解执行逻辑:

  1. void setup() {
  2.         k10.begin();                // 初始化主板全部底层硬件、IO、供电、通信总线
  3.         k10.initScreen(screen_dir); // 初始化LCD屏幕,设置屏幕旋转方向
  4.         ai.initAi();                // 开启ESP32-S3内置NPU AI加速器,加载猫狗检测模型
  5.         k10.initBgCamerImage();     // 初始化摄像头投屏功能,让屏幕实时显示摄像头画面
  6.         k10.setBgCamerImage(false); // 初始化阶段临时关闭摄像头画面,避免画面干扰初始化流程
  7.         k10.creatCanvas();          // 创建绘图缓存画布,先绘图再统一刷新,消除屏幕闪烁
  8.         ai.switchAiMode(ai.NoMode); // 清空上一轮AI模式,防止模式冲突、设备黑屏重启
  9.         k10.setScreenBackground(0x000000); // 设置屏幕底层背景为纯黑色
  10.         k10.setBgCamerImage(true);  // 打开摄像头实时画面投屏
  11.         ai.switchAiMode(ai.Cat);    // 切换AI算法为【猫狗脸部检测】,同时识别猫、狗面部
  12.         k10.canvas->updateCanvas(); // 刷新画布,把初始化界面输出到屏幕
  13. }
复制代码

执行顺序:硬件初始化 → AI 初始化 → 画布 / 摄像头初始化 → 清空旧 AI 模式 → 开启摄像头画面 → 启动猫狗检测算法。

四、loop () 主循环(无限循环,核心识别逻辑)

  1. void loop() {
  2.         // 判断摄像头画面里是否出现猫/狗脸部
  3.         if (ai.isDetectContent(AIRecognition::Cat)) {
  4.                 // 获取宠物脸纵向高度,第6行浅黄色文字
  5.                 k10.canvas->canvasText((String("      猫脸长:") + String(ai.getCatData(AIRecognition::Length))), 6, 0xFFFFCC);
  6.                 // 获取宠物脸横向宽度,第7行浅绿色文字
  7.                 k10.canvas->canvasText((String("      猫脸宽:") + String(ai.getCatData(AIRecognition::Width))), 7, 0x99FF99);
  8.                 // 获取脸部中心点X坐标,第8行浅紫色文字
  9.                 k10.canvas->canvasText((String("猫脸中心坐标X:") + String(ai.getCatData(AIRecognition::CenterX))), 8, 0xCCCCFF);
  10.                 // 获取脸部中心点Y坐标,第9行青蓝色文字
  11.                 k10.canvas->canvasText((String("猫脸中心坐标Y:") + String(ai.getCatData(AIRecognition::CenterY))), 9, 0x66FFFF);
  12.                 // 将画布文字刷新到实体LCD屏幕
  13.                 k10.canvas->updateCanvas();
  14.         }
  15.         delay(1000); // 阻塞延时1秒,每秒检测一次,降低硬件运算压力
  16. }
复制代码

1. 核心 AI 判断接口
ai.isDetectContent(AIRecognition::Cat)
返回true:画面内识别到猫 或 狗的脸部;
返回false:无宠物,不执行文字绘制。

2. 猫狗数据读取接口 ai.getCatData()
仅在猫狗检测模式下可用,用来读取宠物面部信息:
AIRecognition::Length:宠物脸部纵向长度;
AIRecognition::Width:宠物脸部横向宽度;
AIRecognition::CenterX:脸部中心横向坐标;
AIRecognition::CenterY:脸部中心纵向坐标。

3. canvasText 绘图规则
canvasText(显示文本, 行数, 字体RGB颜色)
代码将 4 组数据固定打印在第 6、7、8、9 行,每行用不同颜色区分,方便观察。

4. delay (1000) 作用
每 1 秒刷新一次识别数据,减少频繁读取 AI、刷新屏幕带来的性能消耗;
缺点:阻塞式延时,这 1 秒内无法处理按键、灯光等其他任务。

五、完整运行流程
开发板通电,自动完成硬件、AI、摄像头全部初始化;
AI 切换为猫狗检测模式,屏幕实时显示摄像头取景画面;
镜头出现猫 / 狗面部:屏幕分 4 行打印宠物脸长、脸宽、中心 X、中心 Y 坐标;
镜头无宠物:仅显示摄像头画面,不输出任何文字;
每隔 1 秒循环检测一次画面。

六、使用注意事项
设备必须竖直放置,横屏会大幅降低猫狗识别成功率;
环境光线充足,逆光、昏暗场景识别不稳定;
宠物脸部占画面 1/6 ~ 1/2 识别效果最佳,太远、太近都会检测不到;
禁止在 loop 循环里频繁切换 AI 模式,容易造成黑屏、设备重启。


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上

Mind+图形编程

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上

实验场景图与视频记录

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图1

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图5

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图2

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图3

【花雕动手做】K10 实验之将猫脸相关数据显示在屏幕上图4
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail