开始之前:

1. 识别物体输出相关数据

在物体识别功能下,HUSKYLENS 2 可识别视野内的物体(是80种固定类别物体,详见物体识别使用说明)并将相关数据通过串口打印输出,可以读取的数据有:画面中可识别物体的总数、靠近HUSKYLENS 2 摄像头画面中心的物体ID号、检测到的第一个物体。

示例程序如下。

#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;


// 主程序开始
void setup() {
	Serial.begin(9600);
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	huskylens.switchAlgorithm(ALGORITHM_OBJECT_RECOGNITION);
}
void loop() {
	huskylens.getResult(ALGORITHM_OBJECT_RECOGNITION);
	if ((huskylens.available(ALGORITHM_OBJECT_RECOGNITION))) {
		Serial.println((String("检测的物体总数:") + String((huskylens.getCachedResultNum(ALGORITHM_OBJECT_RECOGNITION)))));
		Serial.println((String("靠近中心的物体的名称") + String((RET_ITEM_STR(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, name)))));
		Serial.println((String("检测到第一个物体的名称") + String((RET_ITEM_STR(huskylens.getCachedResultByIndex(ALGORITHM_OBJECT_RECOGNITION, 1 - 1), Result, name)))));
	}
	delay(500);
}

** 运行结果:**可输出识别到的物体总数,可按要求输出相应物体ID号。

Interface Diagram

2. 获取画面中指定物体的相关数据

HUSKYLENS 2 识别物体后,可获取画面中指定物体的相关数据。例如,判断某个已学习的物体是否在画面中、指定物体的名称、可获取画面中同类物体的数量,当画面中出现多个同类物体时,可指定获取其中某个物体的相关参数,包括名称、X/Y坐标、宽度、高度。

示例程序如下:

#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;


// 主程序开始
void setup() {
	Serial.begin(9600);
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	huskylens.switchAlgorithm(ALGORITHM_OBJECT_RECOGNITION);
}
void loop() {
	huskylens.getResult(ALGORITHM_OBJECT_RECOGNITION);
	Serial.println((String("检测的物体总数:") + String((huskylens.getCachedResultNum(ALGORITHM_OBJECT_RECOGNITION)))));
	if (((huskylens.getCachedResultByID(ALGORITHM_OBJECT_RECOGNITION, 1) != NULL))) {
		Serial.println((String("ID1物体的数量:") + String((huskylens.getCachedResultNumByID(ALGORITHM_OBJECT_RECOGNITION, 1)))));
		Serial.println((String("ID1物体的名称:") + String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_OBJECT_RECOGNITION, 1), Result, name)))));
		Serial.println((String("检测到第一个ID为1的物体中心坐标:") + String((String((String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_OBJECT_RECOGNITION, 1, 1-1), Result, xCenter))) + String(","))) + String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_OBJECT_RECOGNITION, 1, 1-1), Result, yCenter)))))));
	}
	delay(500);
}

**运行结果:**如图所示,可获取到画面中的物体总数、画面中ID1物体数量、名称,以及检测到的第一个ID1物体的坐标位置。

Interface Diagram