开始之前:
1. 识别标签输出相关数据
在标签识别功能下,HUSKYLENS 2 能识别出现在画面中的AprilTag标签,可以通过编程统计标签总数、获取画面中离十字光标最近的标签的相关数据并在串口打印出来,可以读取标签数据有:标签ID、标签内容、标签宽度、标签高度以及标签中心点的X坐标和Y坐标位。当画面中有多个标签时可以获取指定标签的数据。
如何使用标签识别功能,详细操作请看:标签识别功能说明。
示例程序下
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;
// 主程序开始
void setup() {
Serial.begin(9600);
Wire.begin();
while (!huskylens.begin(Wire)) {
delay(100);
}
huskylens.switchAlgorithm(ALGORITHM_TAG_RECOGNITION);
}
void loop() {
huskylens.getResult(ALGORITHM_TAG_RECOGNITION);
if ((huskylens.available(ALGORITHM_TAG_RECOGNITION))) {
Serial.println((String("标签总数为:") + String((huskylens.getCachedResultNum(ALGORITHM_TAG_RECOGNITION)))));
Serial.println((String("靠近中心的标签ID为:") + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_TAG_RECOGNITION), Result, ID)))));
Serial.println((String("靠近中心的标签中心点坐标为:") + String((String((String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_TAG_RECOGNITION), Result, xCenter))) + String(","))) + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_TAG_RECOGNITION), Result, yCenter)))))));
Serial.println((String("检测到的第一个标签的ID为") + String((RET_ITEM_NUM(huskylens.getCachedResultByIndex(ALGORITHM_TAG_RECOGNITION, 1-1), Result, ID)))));
}
delay(500);
}
当识别出标签后,观察HUSKYLENS 2 的屏幕会将标签框出,并在方框的左上角显示解析出的标签内容。打开串口监视器,观察输出的数据。
**运行结果:**如下,对于未学习过的标签默认输出ID为0,串口输出的标签内容与HUSKYLENS 2 的屏幕显示的保持一致。
如下,对学习过的标签串口输出的标签ID,标签内容与HuskyLens 2的屏幕显示的保持一致。
2. 输出指定标签的相关数据
当画面中出现多张同一ID的标签(已学习的标签ID按学习顺序分配,未学习的标签ID统一为0)时,可以使用以下示例程序统计画面中的同一ID标签的数量,获取指定一张ID标签的相关数据。
示例程序下
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;
// 主程序开始
void setup() {
Serial.begin(9600);
Wire.begin();
while (!huskylens.begin(Wire)) {
delay(100);
}
huskylens.switchAlgorithm(ALGORITHM_TAG_RECOGNITION);
}
void loop() {
huskylens.getResult(ALGORITHM_TAG_RECOGNITION);
if ((huskylens.available(ALGORITHM_TAG_RECOGNITION))) {
if (((huskylens.getCachedResultByID(ALGORITHM_TAG_RECOGNITION, 1) != NULL))) {
Serial.println((String("ID1标签的总数为:") + String((huskylens.getCachedResultNumByID(ALGORITHM_TAG_RECOGNITION, 1)))));
Serial.println((String("ID1标签的内容为:") + String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_TAG_RECOGNITION, 1), Result, content)))));
Serial.println((String("第一个ID1标签的中心点坐标为") + String((String((RET_ITEM_NUM(huskylens.getCachedResultByID(ALGORITHM_TAG_RECOGNITION, 1), Result, xCenter))) + String((String(",") + String((RET_ITEM_NUM(huskylens.getCachedResultByID(ALGORITHM_TAG_RECOGNITION, 1), Result, yCenter)))))))));
}
}
delay(500);
}
**运行结果:**如下,当画面中出现多个相同标签时,HUSKYLENS 2 可以识别画面中所有ID为1的标签(前提时已学习某一标签并分配ID为1,未学习过的标签统一ID为0),通过串口能观察统计的当前画面的ID1标签总数。同时串口输出第一张ID为1的标签的相关数据。