15浏览
查看: 15|回复: 6

[K10教程] 【花雕动手做】K10系列实验之屏幕上获取二维码识别结果

[复制链接]
【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图1

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

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


【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图2

驴友花雕  高级技神
 楼主|

发表于 3 小时前

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果

主打:人工智能模块

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图1

识别二维码相关说明

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图2


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 3 小时前

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果


辅助:屏幕显示相关积木

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图2

LED控制模块

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图1


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 3 小时前

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果

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

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

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

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

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

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图1

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 3 小时前

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果

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

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图1

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图6

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图2

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图4

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图5

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果图3
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 3 小时前

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果

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

  1. // 引入行空板K10硬件综合驱动库,封装屏幕、画布、摄像头、RGB彩灯、绘图等全部外设操作接口
  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视觉专用对象,负责启动NPU、切换识别模式、读取二维码解析数据
  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.Code);   // 切换AI工作模式为【二维码识别】,启动二维码扫描解析算法
  26.         k10.canvas->updateCanvas(); // 刷新画布缓存,将初始化完成的空白界面输出到LCD屏幕
  27. }
  28. /**
  29. * @brief 主循环函数,上电后无限循环执行,二维码识别核心逻辑
  30. * 逻辑:检测到二维码后,屏幕打印标题+二维码解析内容,红灯亮起2秒后熄灭、清空屏幕
  31. * delay(2000)为阻塞延时,2秒内无法响应其他识别操作
  32. */
  33. void loop() {
  34.         // 判断摄像头画面中是否识别到有效二维码
  35.         // ai.isDetectContent(AIRecognition::Code) 返回true=检测到二维码,false=无二维码
  36.         if (ai.isDetectContent(AIRecognition::Code)) {
  37.                 // 在画布第3行,白色字体打印实验标题
  38.                 k10.canvas->canvasText("行空板K10系列实验", 3, 0xFFFFFF);
  39.                 // 在画布第5行,浅粉色字体打印功能说明
  40.                 k10.canvas->canvasText("AI 识别二维码", 5, 0xFFCCCC);
  41.                 // 在画布第7行,浅青色字体打印提示文字
  42.                 k10.canvas->canvasText("二维码结果:", 7, 0x99FFFF);
  43.                 // 读取二维码解析到的字符串内容,全屏显示、24号中文字体、透明度50、自动换行
  44.                 k10.canvas->canvasText(ai.getQrCodeContent(), 0, 220, 0xFF6666, k10.canvas->eCNAndENFont24, 50, true);
  45.                 // 将画布所有文字缓存统一刷新输出到实体LCD屏幕
  46.                 k10.canvas->updateCanvas();
  47.                 // 控制全部RGB彩灯亮起红色,作为识别成功提示
  48.                 k10.rgb->write(-1, 0xFF0000);
  49.                 // 阻塞延时2000毫秒=2秒,保持文字与红灯2秒
  50.                 delay(2000);
  51.                 // 2秒结束,关闭所有RGB彩灯
  52.                 k10.rgb->write(-1, 0x000000);
  53.                 // 清空画布所有文字,恢复仅显示摄像头画面的空白状态
  54.                 k10.canvas->canvasClear();
  55.         }
  56. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 3 小时前

【花雕动手做】K10系列实验之屏幕上获取二维码识别结果

代码解读

一、头文件与全局对象

  1. #include "unihiker_k10.h"
  2. #include "AIRecognition.h"
  3. UNIHIKER_K10  k10;
  4. uint8_t       screen_dir=2;
  5. AIRecognition ai;
  6. #include "unihiker_k10.h"
复制代码

行空板 K10 硬件驱动库,封装屏幕、画布、摄像头、RGB 彩灯、绘图等所有外设操作。
  1. #include "AIRecognition.h"
复制代码

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

全局主控对象,所有屏幕、灯光、摄像头操作都通过 k10 调用。
  1. uint8_t screen_dir=2
复制代码

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

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

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

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

v
  1. oid loop() {
  2.         // 判断画面中是否检测到有效二维码
  3.         if (ai.isDetectContent(AIRecognition::Code)) {
  4.                 // 简易文字格式:文字, 显示行数, 字体颜色
  5.                 k10.canvas->canvasText("行空板K10系列实验", 3, 0xFFFFFF);
  6.                 k10.canvas->canvasText("AI 识别二维码", 5, 0xFFCCCC);
  7.                 k10.canvas->canvasText("二维码结果:", 7, 0x99FFFF);
  8.                 // 完整文字格式:文本,X坐标,Y坐标,颜色,字体,透明度,自动换行
  9.                 // ai.getQrCodeContent() 读取二维码内存储的全部文字内容
  10.                 k10.canvas->canvasText(ai.getQrCodeContent(), 0, 220, 0xFF6666, k10.canvas->eCNAndENFont24, 50, true);
  11.                 k10.canvas->updateCanvas(); // 把所有文字刷新到实体屏幕
  12.                 k10.rgb->write(-1, 0xFF0000);// -1代表全部RGB灯,点亮红色提示识别成功
  13.                 delay(2000);                // 阻塞延时2秒,保持灯光和文字2秒
  14.                 k10.rgb->write(-1, 0x000000);// 2秒后关闭所有彩灯
  15.                 k10.canvas->canvasClear();  // 清空画布所有文字,只保留摄像头画面
  16.         }
  17. }
复制代码


1. 核心 AI 接口说明
  1. ai.isDetectContent(AIRecognition::Code)
复制代码

布尔判断函数,true= 画面识别到二维码,false= 无二维码;
  1. ai.getQrCodeContent()
复制代码

仅二维码模式可用,返回二维码内部存储的字符串(网址、文字、数字等)。

2. 两种 canvasText 绘图格式区别
短文本简易写法:canvasText(内容, 行数, 颜色)
适合标题、提示短句,自动按行排布;
长文本完整写法:canvasText(内容,X,Y,颜色,字体,透明度,自动换行)
本代码用来展示二维码长文本,自定义坐标、大号中文字体,超长内容自动换行。

3. 灯光与界面逻辑
识别到二维码 → 屏幕打印标题 + 二维码内容 → RGB 全红灯亮起 → 停留 2 秒 → 灯光熄灭、清空屏幕文字。

四、完整运行流程
板子上电,自动初始化硬件、AI、摄像头,切换为二维码识别;
屏幕实时显示摄像头取景画面,无二维码时无任何文字;
将二维码对准镜头识别成功:
屏幕分多行打印实验标题、扫码结果;
RGB 红色氛围灯亮起;
等待 2 秒后,彩灯熄灭、屏幕文字清空,回到仅显示摄像头画面的状态。

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

回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail