在这里插入图片描述
在这里插入图片描述

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

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

在这里插入图片描述
主打:人工智能模块

在这里插入图片描述

猫狗脸检测相关说明

在这里插入图片描述

辅助:屏幕显示相关积木

在这里插入图片描述
LED控制模块

在这里插入图片描述

知识点:行空板 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 系列实验之猫狗脸检测的将猫脸相关数据显示在屏幕上
实验开源代码

// 引入行空板K10硬件驱动库,封装屏幕、画布、摄像头、背景画面等全部硬件操作接口
#include "unihiker_k10.h"
// 引入AI视觉识别库,提供NPU初始化、AI模式切换、猫狗目标检测、宠物面部数据读取接口
#include "AIRecognition.h"

// 实例化行空板主控全局对象,所有硬件操作均通过k10调用
UNIHIKER_K10  k10;
// 屏幕旋转参数:2=竖直正向显示,猫狗检测推荐竖屏,横屏识别率会大幅下降
uint8_t       screen_dir=2;
// AI识别专用对象,负责加载视觉算法、检测猫狗、读取面部坐标尺寸数据
AIRecognition ai;

/**
 * @brief 上电初始化函数,开发板通电/复位仅执行1次
 * 功能:硬件初始化、AI加速器初始化、开启摄像头投屏、切换为猫狗检测模式
 */
void setup() {
	k10.begin();                // 初始化开发板底层IO、供电、通信总线等全部硬件外设
	k10.initScreen(screen_dir); // 根据screen_dir参数初始化LCD显示屏,设置屏幕朝向
	ai.initAi();                // 启动ESP32-S3内置NPU硬件AI加速器,加载离线视觉推理模型
	k10.initBgCamerImage();     // 初始化摄像头后台画面渲染功能,支持摄像头画面实时投屏到屏幕
	k10.setBgCamerImage(false); // 初始化阶段临时关闭摄像头画面,避免画面干扰初始化流程
	k10.creatCanvas();          // 创建屏幕绘图缓存画布,绘图先存入缓存再统一刷新,消除屏幕闪烁
	ai.switchAiMode(ai.NoMode); // 临时切换AI为无识别模式,清空上一轮残留AI算法,防止模式冲突
	k10.setScreenBackground(0x000000); // 设置屏幕底层默认背景色为纯黑色
	k10.setBgCamerImage(true);  // 开启摄像头实时画面投屏,屏幕持续显示镜头实时取景画面
	ai.switchAiMode(ai.Cat);    // 切换AI工作模式为【猫狗脸部检测】,启动猫、狗面部识别算法
	k10.canvas->updateCanvas(); // 刷新画布缓存,将初始化完成的界面输出到LCD屏幕
}

/**
 * @brief 主循环函数,上电后无限循环执行,程序核心识别逻辑
 * 逻辑:每秒检测一次画面,识别到猫狗则在屏幕打印面部长宽、中心XY坐标;无宠物不绘制文字
 * delay(1000)为阻塞延时,降低AI读取与屏幕刷新频率,减少硬件性能消耗
 */
void loop() {
	// 判断摄像头画面中是否检测到猫或狗的脸部
	// ai.isDetectContent(AIRecognition::Cat) 返回true=识别到猫狗,false=无宠物
	if (ai.isDetectContent(AIRecognition::Cat)) {
		// 读取宠物脸部纵向高度Length,拼接文字显示在画布第6行,浅黄字体0xFFFFCC
		k10.canvas->canvasText((String("      猫脸长:") + String(ai.getCatData(AIRecognition::Length))), 6, 0xFFFFCC);
		// 读取宠物脸部横向宽度Width,画布第7行,浅绿色字体0x99FF99
		k10.canvas->canvasText((String("      猫脸宽:") + String(ai.getCatData(AIRecognition::Width))), 7, 0x99FF99);
		// 读取宠物脸部中心点横向坐标CenterX,画布第8行,浅紫字体0xCCCCFF
		k10.canvas->canvasText((String("猫脸中心坐标X:") + String(ai.getCatData(AIRecognition::CenterX))), 8, 0xCCCCFF);
		// 读取宠物脸部中心点纵向坐标CenterY,画布第9行,青蓝色字体0x66FFFF
		k10.canvas->canvasText((String("猫脸中心坐标Y:") + String(ai.getCatData(AIRecognition::CenterY))), 9, 0x66FFFF);
		// 将画布上所有文字缓存统一刷新输出到实体LCD屏幕
		k10.canvas->updateCanvas();
	}
	// 延时1000毫秒=1秒,每1秒执行一次识别检测,降低运算负荷
	// 缺点:阻塞式延时,延时期间无法响应按键、灯光等其他硬件逻辑
	delay(1000);
}

猫脸检测代码解读

一、头文件说明

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

二、全局硬件对象

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

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

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

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

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

  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 模式,容易造成黑屏、设备重启。

Mind+图形编程

在这里插入图片描述
实验场景图与视频记录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐