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

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

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

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

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


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

驴友花雕  高级技神
 楼主|

发表于 1 小时前

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

主打:人工智能模块

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

猫狗脸检测相关说明

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


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

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

辅助:屏幕显示相关积木

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

LED控制模块

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

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】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

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

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

狗脸检测的几张案例图片

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

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

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

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

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

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

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

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

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

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


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

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

行空板 K10 狗脸检测代码解读

一、头文件与硬件对象区

  1. #include "unihiker_k10.h"
  2. #include "AIRecognition.h"
  3. unihiker_k10.h:行空板 K10 硬件总库,提供屏幕、画布、摄像头、背景画面、RGB 等全部外设操作接口;
  4. AIRecognition.h:板载离线 AI 库,负责 NPU 初始化、AI 模式切换、猫狗 / 人脸检测、坐标尺寸数据读取。
  5. UNIHIKER_K10  k10;
  6. uint8_t       screen_dir=2;
  7. AIRecognition ai;
复制代码

k10:全局主控对象,所有屏幕、绘图、摄像头操作都依靠这个对象;
screen_dir=2:屏幕正向竖直显示,猫狗检测必须竖屏,横屏识别率大幅下降;
ai:AI 视觉专用对象,专门处理猫狗检测相关逻辑。

二、setup () 上电初始化(仅运行 1 次)

  1. void setup() {
  2.         k10.begin();                // 初始化主板底层硬件、IO、供电、通信总线
  3.         k10.initScreen(screen_dir); // 初始化显示屏,设置屏幕旋转方向
  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(); // 刷新画布,把初始化画面输出到LCD屏幕
  13. }
复制代码

执行顺序:硬件初始化 → AI 初始化 → 画布 / 摄像头初始化 → 清空旧 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, 0xFFFFFF);
  6.                 // 读取宠物脸部横向宽度,第7行浅粉色文字
  7.                 k10.canvas->canvasText((String("      狗脸宽:") + String(ai.getCatData(AIRecognition::Width))), 7, 0xFFCCCC);
  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, 0x99FF99);
  12.                 // 将画布文字刷新到实体屏幕
  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(显示文本, 行数, 字体颜色)
程序固定把 4 组数据分别打印在第 6、7、8、9 行,每行使用不同颜色区分数据。

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

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

五、使用注意事项
设备必须竖直摆放,横屏会大幅降低猫狗识别成功率;
环境光线充足,逆光、昏暗环境识别不稳定;
宠物脸部占画面 1/6~1/2 识别效果最好,太远、太近检测不到;
不要在 loop 里频繁调用ai.switchAiMode()切换 AI 模式,容易黑屏、设备重启。


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

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

Mind+图形编程

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

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

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

实验场景图与视频记录
【花雕动手做】K10 实验之将狗脸相关数据显示在屏幕上图6

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

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

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

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

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



回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail