欢迎光临
我们一直在努力

【花雕动手做】行空板 K10 系列实验之摄像头识别到二维码后显示在K10屏幕上

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

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

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

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

在这里插入图片描述

识别二维码相关说明

在这里插入图片描述
辅助:屏幕显示相关积木

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

在这里插入图片描述

知识点:行空板 K10 二维码检测

  • 核心特性与显示机制
    在行空板 K10 的二维码识别模式下,算法机制与人脸或猫狗检测有所不同。当摄像头识别到二维码时,屏幕画面中并不会出现识别框进行叠加显示,而是直接获取并输出识别结果。

  • 图形化编程指令
    在 Mind+ 等图形化编程环境中,实现二维码检测主要依赖以下积木指令:
    模式切换:使用 切换为 二维码识别 模式 指令,将机器视觉算法切换至二维码识别状态。
    结果获取:使用 获取二维码识别结果 K10 积木,用于获取当前摄像头识别到的二维码具体数据内容。
    状态判断:使用 检测到 二维码 积木,作为条件判断语句,用来确认当前画面中是否存在有效的二维码。

  • 基础程序逻辑示例
    一个典型的二维码检测程序逻辑如下:
    主程序开始,显示摄像头画面。
    将模式切换为“二维码识别”。
    进入循环执行:
    判断“如果 检测到 二维码”;
    执行“显示文字”,将文字合并为“二维码结果:”加上“获取二维码识别结果”的值;
    设置显示坐标(如 X:0)、字号(如 16*16)及换行字数等参数;
    执行“显示更新”将结果刷新到 K10 的 2.8寸 LCD 彩屏上。

  • 扩展应用
    除了基础的二维码识别,行空板 K10 还内置了二维码生成算法。开发者可以在离线状态下快速生成包含文字、简单图形或混合信息的二维码,并结合屏幕进行显示,常用于制作个人智能名片等互动项目。

  • 在这里插入图片描述

    二维码检测的几张案例图片

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    【花雕动手做】行空板 K10 系列实验之摄像头识别到二维码后显示在K10屏幕上
    实验开源代码

    // 引入行空板K10硬件综合驱动库,封装屏幕、画布、摄像头、RGB彩灯、绘图等全部外设操作接口
    #include "unihiker_k10.h"
    // 引入离线AI视觉识别库,提供NPU初始化、AI模式切换、二维码检测、读取二维码内容接口
    #include "AIRecognition.h"

    // 实例化行空板主控全局对象,所有屏幕、摄像头、灯光操作均通过k10调用
    UNIHIKER_K10 k10;
    // 屏幕旋转参数:2=竖直正向显示,二维码识别推荐竖屏摆放,横屏识别成功率大幅下降
    uint8_t screen_dir=2;
    // AI视觉专用对象,负责启动NPU、切换识别模式、读取二维码解析数据
    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.Code); // 切换AI工作模式为【二维码识别】,启动二维码扫描解析算法
    k10.canvas->updateCanvas(); // 刷新画布缓存,将初始化完成的空白界面输出到LCD屏幕
    }

    /**
    * @brief 主循环函数,上电后无限循环执行,二维码识别核心逻辑
    * 逻辑:检测到二维码后,屏幕打印标题+二维码解析内容,红灯亮起2秒后熄灭、清空屏幕
    * delay(2000)为阻塞延时,2秒内无法响应其他识别操作
    */

    void loop() {
    // 判断摄像头画面中是否识别到有效二维码
    // ai.isDetectContent(AIRecognition::Code) 返回true=检测到二维码,false=无二维码
    if (ai.isDetectContent(AIRecognition::Code)) {
    // 在画布第3行,白色字体打印实验标题
    k10.canvas->canvasText("行空板K10系列实验", 3, 0xFFFFFF);
    // 在画布第5行,浅粉色字体打印功能说明
    k10.canvas->canvasText("AI 识别二维码", 5, 0xFFCCCC);
    // 在画布第7行,浅青色字体打印提示文字
    k10.canvas->canvasText("二维码结果:", 7, 0x99FFFF);
    // 读取二维码解析到的字符串内容,全屏显示、24号中文字体、透明度50、自动换行
    k10.canvas->canvasText(ai.getQrCodeContent(), 0, 220, 0xFF6666, k10.canvas->eCNAndENFont24, 50, true);
    // 将画布所有文字缓存统一刷新输出到实体LCD屏幕
    k10.canvas->updateCanvas();
    // 控制全部RGB彩灯亮起红色,作为识别成功提示
    k10.rgb->write(1, 0xFF0000);
    // 阻塞延时2000毫秒=2秒,保持文字与红灯2秒
    delay(2000);
    // 2秒结束,关闭所有RGB彩灯
    k10.rgb->write(1, 0x000000);
    // 清空画布所有文字,恢复仅显示摄像头画面的空白状态
    k10.canvas->canvasClear();
    }
    }

    代码解读

    一、头文件与全局对象

    #include "unihiker_k10.h"
    #include "AIRecognition.h"

    UNIHIKER_K10 k10;
    uint8_t screen_dir=2;
    AIRecognition ai;

    #include "unihiker_k10.h"

    行空板 K10 硬件驱动库,封装屏幕、画布、摄像头、RGB 彩灯、绘图等所有外设操作。

    #include "AIRecognition.h"

    离线 AI 视觉库,依托 ESP32-S3 内置 NPU,提供人脸、猫狗、二维码三种离线检测算法。

    UNIHIKER_K10 k10

    全局主控对象,所有屏幕、灯光、摄像头操作都通过 k10 调用。

    uint8_t screen_dir=2

    屏幕旋转参数,2 代表竖直正向显示;二维码识别必须竖放设备,横屏识别成功率暴跌。

    AIRecognition ai

    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.Code); // 切换AI算法为【二维码识别模式】,开启扫码解析
    k10.canvas->updateCanvas(); // 刷新画布,把初始化空白界面输出到LCD
    }

    执行顺序:硬件初始化 → 屏幕初始化 → AI 加速器启动 → 画布 / 摄像头初始化 → 清空旧 AI 模式 → 开启摄像头画面 → 切换二维码识别算法。

    三、loop () 主循环(无限循环,扫码核心逻辑)

    void loop() {
    // 判断画面中是否检测到有效二维码
    if (ai.isDetectContent(AIRecognition::Code)) {
    // 简易文字格式:文字, 显示行数, 字体颜色
    k10.canvas->canvasText("行空板K10系列实验", 3, 0xFFFFFF);
    k10.canvas->canvasText("AI 识别二维码", 5, 0xFFCCCC);
    k10.canvas->canvasText("二维码结果:", 7, 0x99FFFF);

    // 完整文字格式:文本,X坐标,Y坐标,颜色,字体,透明度,自动换行
    // ai.getQrCodeContent() 读取二维码内存储的全部文字内容
    k10.canvas->canvasText(ai.getQrCodeContent(), 0, 220, 0xFF6666, k10.canvas->eCNAndENFont24, 50, true);

    k10.canvas->updateCanvas(); // 把所有文字刷新到实体屏幕
    k10.rgb->write(1, 0xFF0000);// -1代表全部RGB灯,点亮红色提示识别成功
    delay(2000); // 阻塞延时2秒,保持灯光和文字2秒
    k10.rgb->write(1, 0x000000);// 2秒后关闭所有彩灯
    k10.canvas->canvasClear(); // 清空画布所有文字,只保留摄像头画面
    }
    }

  • 核心 AI 接口说明
    ai.isDetectContent(AIRecognition::Code)
    布尔判断函数,true= 画面识别到二维码,false= 无二维码;
    ai.getQrCodeContent()
    仅二维码模式可用,返回二维码内部存储的字符串(网址、文字、数字等)。
  • 两种 canvasText 绘图格式区别
    短文本简易写法:canvasText(内容, 行数, 颜色)
    适合标题、提示短句,自动按行排布;
    长文本完整写法:canvasText(内容,X,Y,颜色,字体,透明度,自动换行)
    本代码用来展示二维码长文本,自定义坐标、大号中文字体,超长内容自动换行。
  • 灯光与界面逻辑
    识别到二维码 → 屏幕打印标题 + 二维码内容 → RGB 全红灯亮起 → 停留 2 秒 → 灯光熄灭、清空屏幕文字。
  • 四、完整运行流程
    板子上电,自动初始化硬件、AI、摄像头,切换为二维码识别;
    屏幕实时显示摄像头取景画面,无二维码时无任何文字;
    将二维码对准镜头识别成功:
    屏幕分多行打印实验标题、扫码结果;
    RGB 红色氛围灯亮起;
    等待 2 秒后,彩灯熄灭、屏幕文字清空,回到仅显示摄像头画面的状态。

    五、使用注意事项
    设备必须竖直摆放,横屏会大幅降低二维码识别成功率;
    环境光线充足,逆光、反光、昏暗场景容易识别失败;
    二维码完整出现在画面内,不能裁切边角、不能严重倾斜;
    禁止在循环内频繁切换 AI 模式(二维码 / 人脸 / 猫狗),容易黑屏、设备重启。

    Mind+图形编程

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

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

    赞(0)
    未经允许不得转载:171主机测评 » 【花雕动手做】行空板 K10 系列实验之摄像头识别到二维码后显示在K10屏幕上
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址