9浏览
查看: 9|回复: 3

[试用测评] 【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据

[复制链接]
【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据图1

HUSKYLENS 2 (二哈识图 2) 是一款简单易用、玩法多样的AI视觉传感器,采用6TOPS算力专用AI芯片,预置人脸识别、目标检测、物体分类、姿态识别、实例分割等20余种开机即用的AI模型,同时,用户还可部署自行训练的模型,教会二哈识图识别任意目标物体。板载的UART / I2C端口,可以与主流控制器Arduinomicro:bit、ESP32、Raspberry Pi等开源硬件无缝连接,被广泛应用于创客、AI教育、STEAM教育和交互艺术领域。

【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据图2#pic_center)

测试实验硬件连接
将HukyLens 2 连接到Arduino主板对应的I2C引脚,使用电源线连接Arduino Uno与电脑。额外供电提示:Arduino Uno的I2C引脚输出的电压不足以支持HUSKYLENS 2正常工作,当HUSKYLENS 2接在Arduino Uno上时须有额外数据线连接HUSKYLENS 2的Type-C接口与电源,为HUSKYLENS 2进行额外供电。接线图可参考下图。

【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据图4
设置测试实验平台
打开 Mind+ 编程软件,选择主控板 Arduino,加载HUSKYLENS 2 库

【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据图3

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据

3、识别条形码的概念,指的是通过光学扫描设备或图像识别算法,对条形码图案进行解析,从而提取其中编码的信息。条形码是一种将数据编码为黑白条纹或方块图案的视觉符号系统,广泛用于商品管理、物流追踪、身份识别等领域。

(1)条形码识别的核心概念
a1. 条形码是什么?
条形码是一种机器可读的编码图案,通常由一组黑白条纹或方块组成。
每种条形码标准(如EAN-13、UPC、QR码)都有特定的编码规则和结构。
条形码可表示数字、字母、甚至二进制数据。
a2. 识别条形码的过程
条形码识别通常包括以下步骤:
图像采集:使用摄像头或扫描器获取条形码图像
图像预处理:去除噪声、增强对比度、校正角度
定位条码区域:识别图像中可能包含条码的区域
解码分析:根据条码类型解析条纹宽度、间距或模块排列
输出信息:将解码结果转换为可读数据,如商品编号、用户ID等
a3. 技术实现方式
硬件识别:使用激光扫描器或CCD图像传感器进行快速读取
软件识别:通过计算机视觉算法(如OpenCV、Zxing)识别图像中的条码
AI增强识别:利用深度学习模型提升识别准确率,尤其在模糊、遮挡或复杂背景下

(2)应用场景
零售收银:快速识别商品价格与信息
物流追踪:扫描包裹条码实现自动分拣与定位
医疗管理:识别药品、病人腕带等信息
工业自动化:生产线上的产品识别与质量追踪
移动识别:手机摄像头识别二维码或条形码,实现支付、登录等功能

(3)条形码动态图形

【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据图1

【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据图3

【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据图2

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 半小时前

【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据

本帖最后由 驴友花雕 于 2025-10-9 09:02 编辑

4、AI 相机视觉传感器 ( 二哈识图 2) 之识别条形码输出相关数据

在条形码识别功能下,HUSKYLENS 2 能识别出现在画面中的条形码,可以通过编程获取画面中离十字光标最近的标签的相关数据并在串口打印出来,可以读取标签数据有:条形码ID、条形码内容、条形码宽度、条形码高度以及条形码中心点的X坐标位置和Y坐标位置。
准备测试的条形码

【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据图1

(1)测试实验开源代码

  1. /*【花雕动手做】HUSKYLENS 2 AI 相机视觉传感器 (二哈识图 2) 之识别条形码输出相关数据
  2. * 使用平台:MindPlus
  3. * 主控板:Arduino Uno
  4. */
  5. #include "DFRobot_HuskylensV2.h"  // 引入 HUSKYLENS 2 的库文件
  6. // 创建 HUSKYLENS 设备对象
  7. HuskylensV2 huskylens;
  8. // 初始化设置函数
  9. void setup() {
  10.   Serial.begin(9600);       // 初始化串口通信,波特率为9600
  11.   Wire.begin();             // 初始化 I2C 通信
  12.   // 循环尝试连接 HUSKYLENS 设备,直到连接成功
  13.   while (!huskylens.begin(Wire)) {
  14.     delay(100);             // 每次尝试之间延迟100毫秒
  15.   }
  16.   // 输出初始化提示信息
  17.   Serial.println("HUSKYLENS 2");
  18.   Serial.println("识别条形码输出相关数据");
  19. }
  20. // 主循环函数
  21. void loop() {
  22.   // 请求 HUSKYLENS 执行条形码识别算法
  23.   huskylens.getResult(ALGORITHM_BARCODE_RECOGNITION);
  24.   // 如果识别结果可用
  25.   if (huskylens.available(ALGORITHM_BARCODE_RECOGNITION)) {
  26.     // 输出条形码的 ID 编号
  27.     Serial.println("条形码ID为" + String(RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_BARCODE_RECOGNITION), Result, ID)));
  28.     // 输出条形码的内容(例如编码信息)
  29.     Serial.println("条形码内容为" + String(RET_ITEM_STR(huskylens.getCachedCenterResult(ALGORITHM_BARCODE_RECOGNITION), Result, content)));
  30.     // 输出条形码在图像中的中心坐标(x, y)
  31.     Serial.println("条形码中心点坐标为" +
  32.       String(RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_BARCODE_RECOGNITION), Result, xCenter)) + "." +
  33.       String(RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_BARCODE_RECOGNITION), Result, yCenter)));
  34.     // 输出条形码的宽度
  35.     Serial.println("条形码宽度为" + String(RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_BARCODE_RECOGNITION), Result, width)));
  36.     // 输出条形码的高度
  37.     Serial.println("条形码高度为" + String(RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_BARCODE_RECOGNITION), Result, height)));
  38.   }
  39.   // 每次识别间隔10秒,避免过于频繁
  40.   delay(10000);
  41. }
复制代码



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 17 分钟前

【花雕动手做】AI 视觉二哈识图 2 之识别条形码输出数据

(2)代码解读
该程序使用 HUSKYLENS 2 AI 相机进行条形码识别,并通过串口输出相关数据。

程序功能概述
这段代码的核心任务是: 使用 HUSKYLENS 2 AI 相机识别图像中的条形码,并将识别结果(ID、内容、位置、尺寸)通过串口输出。

代码结构解读
1. 引入库与创建对象
cpp
  1. #include "DFRobot_HuskylensV2.h"
  2. HuskylensV2 huskylens;
复制代码

引入 HUSKYLENS 2 的驱动库。

创建一个名为 huskylens 的对象,用于与相机通信。

2. 初始化设置(setup)
cpp
  1. void setup() {
  2.   Serial.begin(9600);       // 初始化串口通信,波特率为9600
  3.   Wire.begin();             // 初始化 I2C 通信(用于连接 HUSKYLENS)
  4.   while (!huskylens.begin(Wire)) {
  5.     delay(100);             // 持续尝试连接 HUSKYLENS,直到成功
  6.   }
  7.   Serial.println("HUSKYLENS 2");
  8.   Serial.println("识别条形码输出相关数据");
  9. }
复制代码

初始化串口和 I2C 通信。
连接 HUSKYLENS 设备,连接成功后输出提示信息。

3. 主循环(loop)
cpp
  1. void loop() {
  2.   huskylens.getResult(ALGORITHM_BARCODE_RECOGNITION);
复制代码

请求 HUSKYLENS 执行条形码识别算法。

cpp
  1.   if (huskylens.available(ALGORITHM_BARCODE_RECOGNITION)) {
复制代码

如果识别结果可用,开始读取数据。

4. 输出识别结果
cpp
  1.     Serial.println("条形码ID为" + String(...));
  2.     Serial.println("条形码内容为" + String(...));
  3.     Serial.println("条形码中心点坐标为" + String(...));
  4.     Serial.println("条形码宽度为" + String(...));
  5.     Serial.println("条形码高度为" + String(...));
复制代码

分别输出以下信息:
条形码的唯一 ID(用于区分不同条码)
条形码的内容(例如编码、产品信息)
条形码在图像中的中心坐标(x, y)
条形码的宽度与高度(用于定位与尺寸判断)

5. 延迟控制
cpp
  1.   delay(10000);
复制代码

每次识别后延迟 10 秒,避免过于频繁地读取数据。

应用场景举例
商品识别与库存管理
快递包裹追踪
智能分拣系统
教育项目中的图像识别演示


回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail