|
20| 8
|
[K10教程] 【花雕动手做】 行空板 K10 实验之人脸识别自动照相机 |
![]() 行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。 主要特点 集成摄像头&内置算法,可进行离线图像检测 集成麦克风&内置算法,可进行离线语音识别 集成扬声器&内置算法,可进行离线语音合成 2.8寸彩色屏幕,数据展示更清晰 集成度高,利于教学 接口丰富,兼容软件多,扩展性好 ![]() |
![]() 知识点:行空板 K10 人脸检测 一、什么是行空板人脸检测 行空板 K10 内置 ESP32-S3 AI 硬件加速 NPU,搭配板载摄像头,依托unihiker_k10.h内置 AI 视觉库,本地离线完****脸检测,不需要联网、不需要云端运算,设备单独就能识别画面里是否存在人脸、输出人脸坐标。 区别于人脸识别:人脸检测只找 “人脸区域”,不区分是谁;人脸识别会比对人脸特征区分不同人。 核心硬件基础 主控:ESP32-S3 内置 AI 加速器,专门处理图像识别算法; 外设:板载前置摄像头,实时采集画面; 输出载体:K10 彩色显示屏、RGB 彩灯、扬声器、按键; 存储:TF 卡可保存人脸截图、训练模型。 二、核心基础功能 1、离线实时检测 摄像头持续刷新画面,AI 实时框选画面内所有人脸,输出人脸左上角、右下角坐标,能获取人脸宽度、高度。 2、画面可视化标记 画布直接绘制红色矩形框,把识别到的人脸圈出来,直观展示检测结果。 3、状态联动反馈 检测到人脸 / 无人脸可联动硬件: RGB 彩灯:有人脸亮绿灯、无人脸亮红灯; 音频:检测到人脸播放提示音; 屏幕文字:实时打印「检测到人脸」「未识别人脸」; 4、配套拓展功能 人脸抓拍:检测到人脸自动保存截图到 TF 卡; 延时计数:持续 3 秒检测到人脸再触发动作,过滤瞬间路过干扰; 多人脸识别:支持同时识别画面内多张人脸。 三、底层运行逻辑 摄像头采集图像数据流; NPU 硬件加速运行轻量化人脸检测模型; 算法输出人脸矩形坐标数据; 程序读取坐标,在屏幕画布绘制方框; 循环持续采集 + 推理,实现实时动态追踪人脸。 ![]() 四、两种编程实现方式(Mind+) 方式 1:图形化积木(新手首选,无编译报错) 扩展库加载「AI 视觉 - 人脸检测」,积木逻辑: 初始化摄像头、AI 人脸检测; 循环采集画面; 判断是否检测到人脸; 分支:有人脸→画框、亮绿灯、播放提示音;无人脸→清框、红灯; 优势:不用处理库冲突、无多重定义报错,课堂教学首选。 方式 2:C/C++ 代码(进阶自主开发) 依托unihiker_k10.h内置 AI 接口,核心流程: 初始化摄像头 AI 模块 k10.initAI(); 循环调用人脸检测函数获取人脸数组; 判断人脸数量大于 0,遍历所有人脸坐标; 画布绘制矩形框标记人脸; 联动灯光、音频、存储。 五、典型落地应用场景 1、人脸门禁提醒装置 检测到人脸自动亮绿灯、播放欢迎音效,无人时红灯待机;可拓展继电器控制门锁。 2、课堂人脸考勤记录仪 持续检测画面内人脸,检测到人脸自动抓拍保存照片到 TF 卡,记录到场人员画面。 3、桌面智能护眼监测 检测人脸距离屏幕过近时,屏幕弹出提示文字、蜂鸣器报警,提醒保持观看距离。 4、智能人体感应灯光 识别到人脸自动开启 RGB 氛围灯,人脸离开几秒后自动关灯。 5、互动趣味装置 对准屏幕人脸触发特效、播放音乐,人脸消失特效关闭。 六、使用优缺点 优势 完全离线本地运行,不用 WiFi、不用物联网平台,断网也能用; ESP32-S3 硬件 AI 加速,画面流畅不卡顿,不占用 CPU; 配套 K10 屏幕、灯光、音频、TF 卡全套硬件,拓展简单; Mind + 图形化 + 代码双模式,零基础、进阶学员都适配; 接口高度封装,不用学习复杂 AI 算法,直接调用现成函数。 局限 仅支持人脸检测,原生不自带人脸比对(区分不同人),如需人脸识别需要额外训练模型; 光线过暗、侧脸、遮挡口罩会降低识别准确率; 高帧率连续抓拍会小幅占用内存,多 AI 任务(人脸 + 物体识别)同时运行会卡顿; 抓拍图片默认覆盖存储,如需多图存档需要自定义命名逻辑。 七、实操关键注意事项 光线充足:暗光环境识别率大幅下降,建议室内正常灯光下实验; 人脸正对摄像头:侧脸、低头、口罩遮挡容易漏检; 硬件初始化顺序:必须先k10.begin()、初始化摄像头,再开启 AI 人脸检测; 不要叠加多余图形库(TFT_eSPI),避免多重定义编译报错; 循环内减少delay()阻塞延时,否则人脸画面卡顿、检测失效; 抓拍保存照片需提前执行k10.initSDFile()初始化 TF 卡。 ![]() |
|
【花雕动手做】行空板 K10 系列实验之人脸检测的人脸录入识别自动照相机 实验开源代码 |
|
人脸自动相机代码解读 一、头文件与函数前置声明 unihiker_k10.h:行空板 K10 全套硬件驱动,封装屏幕、RGB 彩灯、物理按键、摄像头、画布绘图接口; AIRecognition.h:ESP32-S3 板载离线 AI 库,依托内置 NPU 实现人脸采集录入、人脸特征比对识别,无需联网。 提前声明 A、B 按键的中断回调函数,setup绑定按键时编译器可提前识别函数,防止未定义报错。 二、全局硬件对象 k10:主板全局主控对象,所有屏幕、灯光、摄像头操作统一通过该对象调用; screen_dir=2:屏幕正向正常显示,修改 0/1/2/3 可翻转画面; ai:人脸识别专用对象,负责人脸初始化、下发录入 / 识别指令、读取人脸 ID; music:音频播放对象,本案例未使用音乐功能,保留用于兼容旧工程。 三、全局状态控制变量 startDetectFlag:程序分两种模式,false= 待机不检测人脸,true= 开启人脸抓拍逻辑; faceHoldTimer + FACE_SHOOT_DELAY:实现人脸 2 秒稳定缓冲,短暂转头、挡脸不会立刻重置逻辑; blinkTimer / blinkState:无阻塞控制红灯交替闪烁做抓拍倒计时提示,不卡顿画面; shootFlag:单次抓拍锁,同一人脸稳定周期只弹出一次抓拍成功提示,避免刷屏。 四、封装函数:待机界面 showStandbyUI () 功能 统一复用绘图代码,开机、人脸超时退出、人脸录入完成后都会调用: 清空画布所有文字残留; 打印红色标题 + 白色按键操作指引; 刷新屏幕画面; 关闭全部 RGB 彩灯,待机状态无灯光。 五、封装函数:模拟抓拍 takePhoto () 说明 因当前 Mind + 内置 K10 库缺少统一拍照存储接口,删除 TF 卡保存图片逻辑,仅做软件标记: shootFlag=true 标记当前人脸周期已完成抓拍; 记录当前系统时间戳,用于控制 “抓拍成功” 提示文字停留 2 秒自动消失。 六、setup () 上电初始化(仅开机执行 1 次) 执行流程:底层硬件初始化 → AI 加速器 → 摄像头 → 绑定按键 → 切换人脸 AI 模式 → 加载待机界面 七、loop () 主循环(程序无限循环,核心业务逻辑) 整体分为三大分支:待机拦截、识别到人脸、人脸丢失判断 八、A 按键回调函数 onButtonAPressed ():人脸录入功能 v 操作流程:按下 A → 屏幕提示采集人脸 → 等待 3 秒采集 → 提示录入完成 → 自动切回待机。 九、B 按键回调函数 onButtonBPressed ():启动人脸相机检测 按下 B 后正式进入工作模式,摄像头持续识别人脸、控制红灯倒计时、弹出抓拍成功提示。 十、完整运行流程总结 开机:自动待机,屏幕仅显示按键操作指引,RGB 灯全灭,不检测人脸; 录入人脸:对准人脸按 A,等待 3 秒采集完成,1.2 秒后自动回到待机;第一张人脸 ID=1,第二张 ID=2; 启动相机:按下 B 开启人脸检测工作模式; 人脸稳定停留满 2 秒:RGB 红灯 300ms 交替闪烁倒计时,屏幕显示「即将自动抓拍...」,弹出一次绿色「抓拍成功!」提示,提示持续 2 秒消失; 人脸短暂遮挡、低头、转头(2 秒内):画面不切换、不重置抓拍标记,保持当前界面; 人脸完全离开镜头超过 2 秒:重置全部计时与抓拍标记,屏幕显示「等待人脸进入画面...」; 如需再次触发抓拍,必须人脸重新进入镜头累计满 2 秒稳定时长。 核心优化亮点 移除 TF 卡拍照存储代码,规避老旧库拍照接口不存在的编译报错; 2 秒人脸缓冲机制,解决人脸轻微晃动、遮挡导致界面反复跳转; 红灯交替闪烁倒计时视觉提示,交互直观; 单次抓拍锁,同一人脸周期只弹出一次成功提示,不会无限刷屏; 超时自动重置逻辑,无需手动关闭,逻辑分层清晰,待机 / 识别 / 人脸丢失三种场景互不干扰。 |
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed