81浏览
查看: 81|回复: 5

[试用测评] 【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据

[复制链接]
一、相关知识点
1、HUSKYLENS 2(二哈识图2)是DFRobot推出的新一代AI视觉传感器,搭载6TOPS算力的Kendryte K230双核RISC-V芯片,集成1GB LPDDR4内存与8GB存储,支持人脸识别、物体检测、姿态估计等20余种预置AI模型,同时允许用户通过自训练模型部署实现定制化识别
。其硬件配置包括200万像素摄像头、2.4英寸触摸屏、可更换镜头模组(支持显微/夜视)及RGB补光灯,搭配UART/I2C接口可无缝连接Arduino、树莓派等开发板,实现实时图传与多模态交互。内置MCP服务打通本地视觉与大模型能力,例如识别午餐图片后可生成膳食建议,而模型广场提供车牌识别、跌倒检测等垂直领域即用型方案。作为教育利器,它已融入《中小学人工智能通识教育指南》课程体系,通过Mind+图形化编程工具降低AI开发门槛,助力创客教育与STEAM实践。

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图1

2、行空板 K10 是一款专为中小学信息科技教学和创客项目设计的国产 AIoT 开发板,以 ESP32-S3 为核心,高度集成 2.8 英寸全彩 LCD 屏、摄像头、双麦扬声器、WiFi 蓝牙模块及温湿度、光线、加速度等多种传感器,无需额外配件即可实现离线语音识别(支持 200 词库)、人脸识别、二维码读取、物联网联动等功能,支持 Mind + 图形化编程与 MicroPython 代码编程,兼顾入门便捷性与功能扩展性,丰富的扩展接口还能连接外部传感器、执行器,轻松落地 AI、物联网类创意项目,是编程学习与科创实践的高性价比选择。

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图2

3、Mind + 是 DFRobot 旗下蘑菇云科创教育团队研发的、拥有自主知识产权的国产青少年编程软件,它兼容 Scratch3.0,既支持零基础学习者拖拽图形化积木编程,也能切换至 Python/C/C++ 代码编程,且积木可自动转换为对应代码助力进阶学习,同时适配行空板M10\ K10、Arduino、micro:bit 等众多主流开源硬件与上百种电子模块,集成图像识别、语音识别等 AI 功能及物联网开发能力,还搭配实时交互、程序烧录脱机运行等模式与丰富教学案例,适配校内外编程教学、创客项目及竞赛等场景,是兼顾低入门门槛与高拓展性的科创教育工具。

二、硬件连接
准备材料
行空板K10 x 1
HUSKYLENS 2 x 1
USB数据线 x 2
4pin连接线(或杜邦线)x 1

准备一根USB数据线和一根4Pin白色硅胶线。使用USB数据线连接电脑与行空板K10,使用4Pin黑胶先连接行空板K10与HuskyLens 2,再使用额外的USB数据线n连接示意图如下连接HUSKYLENS 2的Type-C接口与电源,为HUSKYLENS 2进行额外供电。接线图可参考下图。

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图3

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图4

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图5

驴友花雕  高级技神
 楼主|

发表于 4 天前

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据

三、物体识别(Object Recognition)是计算机视觉领域中的核心技术之一,其主要目标是:让计算机或智能设备能够“看懂”图像中的物体,并准确判断其类别、位置和属性。物体识别是让机器“看懂世界”的关键一步。它是人工智能“视觉理解”的基础,广泛应用于自动驾驶、安防监控、智能机器人、图像搜索、增强现实等场景。

(1)物体识别的基本定义
物体识别是指:
通过图像处理与深度学习算法,自动识别图像或视频中存在的物体,并标注其类别(如人、车、猫)与位置(如边框、坐标)。
它不仅判断“这是什么”,还能指出“它在哪里”。

(2)物体识别的关键流程
图像采集:通过摄像头或图像文件获取视觉数据。
特征提取:分析图像中的颜色、纹理、形状、边缘等特征。
分类判断:使用训练好的模型判断物体属于哪个类别。
位置定位:标出物体在图像中的具体位置(如边框或关键点)。
结果输出:返回识别结果供系统使用或用户查看。

(3)与相关技术的区别

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图1

(4)应用场景举例
自动驾驶识别行人、车辆、交通标志
安防系统识别可疑人物或物品
手机相册自动分类人物、动物、风景
教育实验识别颜色球、标签、手势等
智能零售识别商品并自动结算
机器人识别目标物体并进行抓取或互动

(5)常见识别模型与算法

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图2

(6)相关场景

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图5

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图4

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图3

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 4 天前

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据

四、【花雕动手做】HUSKYLENS 2 AI视觉传感器之识别物体输出相关数据
可识别HuskyLens 2视野内的物体(须是可识别的80种固定类别物体,详见物体识别功能介绍),获取物体相关数据,可以读取的数据有:画面中可识别物体的总数、靠近HuskyLens 2摄像头画面中心的物体ID号、检测到的第一个物体。识别物体后,可获取画面中指定物体的相关数据。例如,判断某个指定的物体是否在画面中、指定物体的名称、可获取画面中指定同类物体的数量,当画面中出现多个同类物体时,可指定获取其中某个物体的相关参数,包括名称、X/Y坐标、宽度、高度。

1、实际测试的几个范本

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图3

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图2

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图1

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图4

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 4 天前

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据

2、测试实验代码

  1. /*【花雕动手做】HUSKYLENS 2 AI视觉传感器之识别物体输出相关数据
  2. * MindPlus
  3. * esp32s3bit
  4. */
  5. #include "unihiker_k10.h"          // 行空板K10开发板库,提供显示屏控制和用户交互接口
  6. #include "DFRobot_HuskylensV2.h"   // 二哈识图2 AI视觉传感器库,封装物体识别算法
  7. // 创建全局对象实例
  8. HuskylensV2  huskylens;           // HUSKYLENS视觉传感器对象,负责图像采集和物体识别
  9. UNIHIKER_K10 k10;                 // 行空板K10开发板对象,控制TFT显示屏和外围设备
  10. uint8_t      screen_dir=2;        // 屏幕显示方向参数(2通常表示横向显示模式)
  11. // 系统初始化函数 - 在设备启动时执行一次
  12. void setup() {
  13.         k10.begin();                    // 初始化行空板K10开发板基础硬件(GPIO、SPI、I2C、定时器)
  14.         Wire.begin();                   // 初始化I2C通信总线,默认引脚SDA=8, SCL=9,400kHz速率
  15.        
  16.         // HUSKYLENS传感器初始化重试机制
  17.         // 确保AI视觉传感器正常连接并完成启动自检
  18.         while (!huskylens.begin(Wire)) {
  19.                 delay(100);                 // 等待100ms后重试,避免I2C总线冲突和电源冲击
  20.         }
  21.        
  22.         k10.initScreen(screen_dir);     // 按照指定方向初始化LCD显示屏控制器
  23.         k10.creatCanvas();              // 创建图形画布缓冲区,实现双缓冲显示机制
  24.        
  25.         // 设置HUSKYLENS算法模式为物体识别
  26.         // 物体识别基于深度学习模型,能够识别和分类多种常见物体
  27.         huskylens.switchAlgorithm(ALGORITHM_OBJECT_RECOGNITION);
  28.        
  29.         // 在屏幕第2行显示系统标题
  30.         k10.canvas->canvasText("识别物体数据", 2, 0x0000FF);  // 蓝色标题,第2行
  31. }
  32. // 主循环函数 - 持续执行物体识别和数据显示
  33. void loop() {
  34.         // 触发HUSKYLENS执行物体识别算法并获取结果
  35.         // 内部处理流程:图像采集 → 特征提取 → 目标检测 → 分类识别 → 结果输出
  36.         huskylens.getResult(ALGORITHM_OBJECT_RECOGNITION);
  37.        
  38.         // 检查是否有新的物体识别结果可用
  39.         if ((huskylens.available(ALGORITHM_OBJECT_RECOGNITION))) {
  40.                 // === 显示画面中心区域的物体ID ===
  41.                 // 每个检测到的物体被分配一个唯一ID,用于目标跟踪和识别
  42.                 k10.canvas->canvasText((String("靠中心的物体ID: ") +
  43.                         String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, ID)))),
  44.                         4, 0xFF0000);  // 第4行,红色文字,突出显示目标标识
  45.                
  46.                 // === 显示检测到的物体总数 ===
  47.                 // 反映当前画面中识别到的独立物体数量
  48.                 k10.canvas->canvasText((String("物体总数: ") +
  49.                         String((huskylens.getCachedResultNum(ALGORITHM_OBJECT_RECOGNITION)))),
  50.                         5, 0xFF0000);  // 第5行,红色文字,环境统计信息
  51.                
  52.                 // === 显示中心物体的宽度和高度尺寸 ===
  53.                 // 提供物体边界框的物理尺寸信息,用于目标大小判断和距离估计
  54.                 k10.canvas->canvasText((String("物体宽高: ") +
  55.                         String((String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, width))) +
  56.                         String((String(",") +
  57.                         String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, height)))))))),
  58.                         6, 0x0000FF);  // 第6行,蓝色显示尺寸信息
  59.                
  60.                 // === 显示中心物体的坐标位置 ===
  61.                 // 提供物体在图像中的空间位置信息,用于目标定位和跟踪
  62.                 k10.canvas->canvasText((String("物体坐标: ") +
  63.                         String((String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, xCenter))) +
  64.                         String((String(",") +
  65.                         String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, yCenter)))))))),
  66.                         7, 0x0000FF);  // 第7行,蓝色显示坐标信息
  67.         }
  68.        
  69.         // 特殊处理:检查ID为1的特定物体是否存在
  70.         // 这种按ID查询的方式适用于需要跟踪特定类型物体的场景
  71.         if (((huskylens.getCachedResultByID(ALGORITHM_OBJECT_RECOGNITION, 1) != NULL))) {
  72.                 // === 显示ID=1的物体在画面中的出现次数 ===
  73.                 // 用于统计特定类型物体的数量
  74.                 k10.canvas->canvasText((String("ID1物体总数:") +
  75.                         String((huskylens.getCachedResultNumByID(ALGORITHM_OBJECT_RECOGNITION, 1)))),
  76.                         9, 0xFF0000);  // 第9行,红色文字,突出显示特定ID信息
  77.                
  78.                 // === 显示ID=1的物体的类别名称 ===
  79.                 // 物体名称是预训练模型输出的类别标签,如"person", "cup", "phone"等
  80.                 k10.canvas->canvasText((String("ID1物体名称:") +
  81.                         String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_OBJECT_RECOGNITION, 1), Result, name)))),
  82.                         10, 0xFF0000);  // 第10行,红色显示物体类别名称
  83.         }
  84.        
  85.         // 更新画布显示:将内存缓冲区中的图形数据一次性刷新到物理屏幕
  86.         // 采用双缓冲技术确保显示平滑,避免闪烁和撕裂现象
  87.         k10.canvas->updateCanvas();
  88.        
  89.         // 控制循环频率:50ms延迟对应20Hz刷新率
  90.         // 平衡识别实时性、处理负载和系统功耗
  91.         delay(50);
  92. }
复制代码


代码解读和架构分析:

系统架构与核心技术栈
1. 硬件系统架构
text
┌─────────────────┐    I2C通信     ┌──────────────────┐
│   ESP32-S3      │◄─────────────►│   HUSKYLENS 2    │
│  (主控制器)     │                                          │  (AI视觉传感器) │
│   • 240MHz      │                                         │   • Kendryte K210│
│   • 双核处理器  │                                        │   • 深度学习加速│
└─────────────────┘                     └──────────────────┘
         │
         │ 显示接口
         ▼
┌─────────────────┐
│  行空板K10屏幕  │
│  (用户界面)     │
└─────────────────┘

2. 软件架构层次
text
应用层: 物体识别显示系统
    ↓
控制层: 双重查询策略(中心优先 + ID定向)
    ↓
算法层: HUSKYLENS物体识别引擎
    ↓    ├── 目标检测(YOLO/SSD)
驱动层: I2C协议 + 显示驱动   ├── 特征提取(CNN)
    ↓    └── 非极大值抑制
硬件层: 摄像头 + AI芯片 + 显示屏

代码执行流程深度分析
1. 初始化阶段技术细节
cpp
  1. void setup() {
  2.     k10.begin();                    // 初始化行空板硬件平台
  3.     Wire.begin();                   // 初始化I2C,主机模式
  4.    
  5.     // 传感器连接建立 - 采用阻塞式重试
  6.     while (!huskylens.begin(Wire)) {
  7.         delay(100);                 // 简单的固定间隔重试策略
  8.     }
  9.    
  10.     k10.initScreen(screen_dir);     // 配置LCD显示参数
  11.     k10.creatCanvas();              // 双缓冲显示初始化
  12.    
  13.     // 切换到物体识别算法模式
  14.     // 在K210芯片上加载预训练的物体检测模型
  15.     huskylens.switchAlgorithm(ALGORITHM_OBJECT_RECOGNITION);
  16. }
复制代码


关键技术特性:
硬件抽象:统一的API封装底层硬件差异
连接可靠性:自动重试确保传感器可用性
显示优化:双缓冲消除屏幕闪烁

2. 主循环实时处理流水线
cpp
  1. void loop() {
  2.     // 阶段1: 数据采集与处理
  3.     huskylens.getResult(ALGORITHM_OBJECT_RECOGNITION);
  4.    
  5.     // 阶段2: 通用信息显示(中心物体)
  6.     if (huskylens.available(ALGORITHM_OBJECT_RECOGNITION)) {
  7.         displayCenterObjectInfo();  // 显示中心区域物体信息
  8.     }
  9.    
  10.     // 阶段3: 特定目标跟踪(ID=1的物体)
  11.     if (huskylens.getCachedResultByID(ALGORITHM_OBJECT_RECOGNITION, 1) != NULL) {
  12.         displaySpecificObjectInfo(); // 显示特定ID物体信息
  13.     }
  14.    
  15.     // 阶段4: 显示输出
  16.     k10.canvas->updateCanvas();
  17.     delay(50);  // 20Hz时序控制
  18. }
复制代码


物体识别核心技术解析
1. HUSKYLENS物体识别算法流程
text
图像采集(OV摄像头)
    ↓
图像预处理(归一化、尺寸调整)
    ↓
神经网络前向推理(MobileNet-SSD/YOLO)
    ↓
边界框回归(坐标预测)
    ↓
置信度过滤(阈值0.5以上)
    ↓
非极大值抑制(去除重叠框)
    ↓
类别解码(输出物体标签)
    ↓
结果序列化(I2C数据包)
2. 深度学习模型特性
支持的物体类别(典型):

cpp
  1. // COCO数据集80类别子集
  2. 1: "person"       2: "bicycle"     3: "car"         4: "motorcycle"
  3. 5: "airplane"     6: "bus"         7: "train"       8: "truck"
  4. 9: "boat"         10: "traffic light" ... 67: "cell phone" ...
复制代码


模型性能指标:
推理速度:~30ms (K210 @ 400MHz)
检测精度:mAP ~60% (COCO数据集)
输入分辨率:320x240 / 640x480
支持类别:20-80种常见物体

数据结构与信息架构
1. 物体识别结果数据结构
cpp
  1. // HUSKYLENS返回的物体识别数据结构
  2. typedef struct {
  3.     uint16_t ID;                    // 物体唯一标识(用于跟踪)
  4.     char name[32];                  // 类别名称("person", "cup")
  5.     uint16_t xCenter;               // 中心X坐标(0-320)
  6.     uint16_t yCenter;               // 中心Y坐标(0-240)
  7.     uint16_t width;                 // 边界框宽度
  8.     uint16_t height;                // 边界框高度
  9.     float confidence;               // 检测置信度(0.0-1.0)
  10.     uint32_t tracking_id;           // 跟踪ID(跨帧一致性)
  11.     Rect raw_bbox;                  // 原始边界框{x,y,w,h}
  12. } ObjectDetectionResult;
复制代码


2. 双重查询机制技术实现
中心优先查询算法:

cpp
  1. // 伪代码:选择中心物体的逻辑
  2. ObjectDetectionResult getCachedCenterResult() {
  3.     ObjectDetectionResult* all_results = getCachedResults();
  4.     ObjectDetectionResult* center_obj = NULL;
  5.     float min_distance = FLT_MAX;
  6.    
  7.     for (each result in all_results) {
  8.         float distance = calculateDistance(result.xCenter, result.yCenter,
  9.                                          IMAGE_CENTER_X, IMAGE_CENTER_Y);
  10.         if (distance < min_distance) {
  11.             min_distance = distance;
  12.             center_obj = result;
  13.         }
  14.     }
  15.     return center_obj;
  16. }
复制代码


ID定向查询机制:

cpp
  1. // 按类别ID过滤和统计
  2. ObjectDetectionResult* getCachedResultByID(int target_id) {
  3.     // 在缓存结果中查找特定ID的物体
  4.     // 用于跟踪特定类别的物体
  5. }
  6. int getCachedResultNumByID(int target_id) {
  7.     // 统计画面中特定ID物体的数量
  8.     // 用于目标计数应用
  9. }
复制代码


实时性能优化策略
1. 20Hz处理周期分析
cpp
  1. delay(50); // 50ms时间分配:
复制代码


text
┌─────────────────────────────────────────────┐
│ 图像采集(8ms) │ 神经网络推理(25ms) │ 后处理(5ms) │
├─────────────────────────────────────────────┤
│ 数据传输(3ms) │ 显示渲染(6ms) │ 系统余量(3ms) │
└─────────────────────────────────────────────┘
2. 数据处理优化技术
cpp
  1. // 条件执行减少计算开销
  2. if (huskylens.available(ALGORITHM_OBJECT_RECOGNITION)) {
  3.     // 避免不必要的字符串操作
  4.     // 使用缓存机制减少重复计算
  5. }
  6. // 内存访问优化
  7. // - 使用预分配的显示缓冲区
  8. // - 避免动态内存分配
  9. // - 优化字符串拼接操作
复制代码



回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 4 天前

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据

测试实验代码

  1. /*【花雕动手做】HUSKYLENS 2 AI视觉传感器之识别物体输出相关数据
  2. * MindPlus
  3. * esp32s3bit
  4. */
  5. #include "unihiker_k10.h"          // 行空板K10开发板库,提供显示屏控制和用户交互接口
  6. #include "DFRobot_HuskylensV2.h"   // 二哈识图2 AI视觉传感器库,封装物体识别算法
  7. // 创建全局对象实例
  8. HuskylensV2  huskylens;           // HUSKYLENS视觉传感器对象,负责图像采集和物体识别
  9. UNIHIKER_K10 k10;                 // 行空板K10开发板对象,控制TFT显示屏和外围设备
  10. uint8_t      screen_dir=2;        // 屏幕显示方向参数(2通常表示横向显示模式)
  11. // 系统初始化函数 - 在设备启动时执行一次
  12. void setup() {
  13.         k10.begin();                    // 初始化行空板K10开发板基础硬件(GPIO、SPI、I2C、定时器)
  14.         Wire.begin();                   // 初始化I2C通信总线,默认引脚SDA=8, SCL=9,400kHz速率
  15.        
  16.         // HUSKYLENS传感器初始化重试机制
  17.         // 确保AI视觉传感器正常连接并完成启动自检
  18.         while (!huskylens.begin(Wire)) {
  19.                 delay(100);                 // 等待100ms后重试,避免I2C总线冲突和电源冲击
  20.         }
  21.        
  22.         k10.initScreen(screen_dir);     // 按照指定方向初始化LCD显示屏控制器
  23.         k10.creatCanvas();              // 创建图形画布缓冲区,实现双缓冲显示机制
  24.        
  25.         // 设置HUSKYLENS算法模式为物体识别
  26.         // 物体识别基于深度学习模型,能够识别和分类多种常见物体
  27.         huskylens.switchAlgorithm(ALGORITHM_OBJECT_RECOGNITION);
  28.        
  29.         // 在屏幕第2行显示系统标题
  30.         k10.canvas->canvasText("识别物体数据", 2, 0x0000FF);  // 蓝色标题,第2行
  31. }
  32. // 主循环函数 - 持续执行物体识别和数据显示
  33. void loop() {
  34.         // 触发HUSKYLENS执行物体识别算法并获取结果
  35.         // 内部处理流程:图像采集 → 特征提取 → 目标检测 → 分类识别 → 结果输出
  36.         huskylens.getResult(ALGORITHM_OBJECT_RECOGNITION);
  37.        
  38.         // 检查是否有新的物体识别结果可用
  39.         if ((huskylens.available(ALGORITHM_OBJECT_RECOGNITION))) {
  40.                 // === 显示画面中心区域的物体ID ===
  41.                 // 每个检测到的物体被分配一个唯一ID,用于目标跟踪和识别
  42.                 k10.canvas->canvasText((String("靠中心的物体ID: ") +
  43.                         String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, ID)))),
  44.                         4, 0xFF0000);  // 第4行,红色文字,突出显示目标标识
  45.                
  46.                 // === 显示检测到的物体总数 ===
  47.                 // 反映当前画面中识别到的独立物体数量
  48.                 k10.canvas->canvasText((String("物体总数: ") +
  49.                         String((huskylens.getCachedResultNum(ALGORITHM_OBJECT_RECOGNITION)))),
  50.                         5, 0xFF0000);  // 第5行,红色文字,环境统计信息
  51.                
  52.                 // === 显示中心物体的宽度和高度尺寸 ===
  53.                 // 提供物体边界框的物理尺寸信息,用于目标大小判断和距离估计
  54.                 k10.canvas->canvasText((String("物体宽高: ") +
  55.                         String((String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, width))) +
  56.                         String((String(",") +
  57.                         String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, height)))))))),
  58.                         6, 0x0000FF);  // 第6行,蓝色显示尺寸信息
  59.                
  60.                 // === 显示中心物体的坐标位置 ===
  61.                 // 提供物体在图像中的空间位置信息,用于目标定位和跟踪
  62.                 k10.canvas->canvasText((String("物体坐标: ") +
  63.                         String((String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, xCenter))) +
  64.                         String((String(",") +
  65.                         String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, yCenter)))))))),
  66.                         7, 0x0000FF);  // 第7行,蓝色显示坐标信息
  67.         }
  68.        
  69.         // 特殊处理:检查ID为1的特定物体是否存在
  70.         // 这种按ID查询的方式适用于需要跟踪特定类型物体的场景
  71.         if (((huskylens.getCachedResultByID(ALGORITHM_OBJECT_RECOGNITION, 1) != NULL))) {
  72.                 // === 显示ID=1的物体在画面中的出现次数 ===
  73.                 // 用于统计特定类型物体的数量
  74.                 k10.canvas->canvasText((String("ID1物体总数:") +
  75.                         String((huskylens.getCachedResultNumByID(ALGORITHM_OBJECT_RECOGNITION, 1)))),
  76.                         9, 0xFF0000);  // 第9行,红色文字,突出显示特定ID信息
  77.                
  78.                 // === 显示ID=1的物体的类别名称 ===
  79.                 // 物体名称是预训练模型输出的类别标签,如"person", "cup", "phone"等
  80.                 k10.canvas->canvasText((String("ID1物体名称:") +
  81.                         String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_OBJECT_RECOGNITION, 1), Result, name)))),
  82.                         10, 0xFF0000);  // 第10行,红色显示物体类别名称
  83.         }
  84.        
  85.         // 更新画布显示:将内存缓冲区中的图形数据一次性刷新到物理屏幕
  86.         // 采用双缓冲技术确保显示平滑,避免闪烁和撕裂现象
  87.         k10.canvas->updateCanvas();
  88.        
  89.         // 控制循环频率:50ms延迟对应20Hz刷新率
  90.         // 平衡识别实时性、处理负载和系统功耗
  91.         delay(50);
  92. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 4 天前

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据

4、测试实验MInd+图形编程

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图1

5、实验场景图

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图2

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图3

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图4

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图5

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图6

【花雕动手做】AI 视觉传感器二哈识图2之识别物体数据图7


回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail