开始之前:

1. 实例分割并输出相关数据

在实例分割功能下,HUSKYLENS可以识别中图像中物体的类别并标记出每个物体的轮廓。可以使用程序打印出HUSKYLENS识别出的实例总数墩号靠近中心的实例和指定ID实例的名称、ID、中心点X、Y坐标以及物体的宽度和高度。

示例程序如下。

#include "unihiker_k10.h"
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2  huskylens;
UNIHIKER_K10 k10;
uint8_t      screen_dir=2;


// 主程序开始
void setup() {
	k10.begin();
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	k10.initScreen(screen_dir);
	k10.creatCanvas();
	huskylens.switchAlgorithm(ALGORITHM_SEGMENT);
}
void loop() {
	huskylens.getResult(ALGORITHM_SEGMENT);
	if ((huskylens.available(ALGORITHM_SEGMENT))) {
		k10.canvas->canvasText((String((String("实例有:") + String((huskylens.getCachedResultNum(ALGORITHM_SEGMENT))))) + String("个")), 1, 0x0000FF);
		k10.canvas->canvasText((String("靠近中心实例ID为") + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_SEGMENT), Result, ID)))), 2, 0x0000FF);
		k10.canvas->canvasText("识别第1个实例的坐标", 3, 0x0000FF);
		k10.canvas->canvasText((String((RET_ITEM_NUM(huskylens.getCachedResultByIndex(ALGORITHM_SEGMENT, 1 - 1), Result, xCenter))) + String((String(",") + String((RET_ITEM_NUM(huskylens.getCachedResultByIndex(ALGORITHM_SEGMENT, 1 - 1), Result, yCenter)))))), 4, 0x0000FF);
	}
	k10.canvas->updateCanvas();
	delay(500);
}

**运行结果:**当程序上传成功后,HUSKYLENS 2会自动切换到实例分割功能下,将HUSKYLENS 2对准待识别的物体(必须是80类之中),观察行空板K10屏幕显示出现识别到的实例数量、指定实例的ID、中心点坐标等数据。实例分割功能说明

Interface Diagram

2. 获取指定实例的相关数据

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

示例程序如下。

#include "unihiker_k10.h"
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2  huskylens;
UNIHIKER_K10 k10;
uint8_t      screen_dir=2;


// 主程序开始
void setup() {
	k10.begin();
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	k10.initScreen(screen_dir);
	k10.creatCanvas();
	huskylens.switchAlgorithm(ALGORITHM_SEGMENT);
}
void loop() {
	huskylens.getResult(ALGORITHM_SEGMENT);
	if ((huskylens.available(ALGORITHM_SEGMENT))) {
		if (((huskylens.getCachedResultByID(ALGORITHM_SEGMENT, 1) != NULL))) {
			k10.canvas->canvasText((String("ID1实例总数为:") + String((huskylens.getCachedResultNumByID(ALGORITHM_SEGMENT, 1)))), 1, 0x0000FF);
			k10.canvas->canvasText((String("ID1实例名称为:") + String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_SEGMENT, 1), Result, name)))), 2, 0x0000FF);
			k10.canvas->canvasText("第1个ID1实例坐标为:", 3, 0x0000FF);
			k10.canvas->canvasText((String((String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_SEGMENT, 1, 1-1), Result, xCenter))) + String(","))) + String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_SEGMENT, 1, 1-1), Result, yCenter)))), 4, 0x0000FF);
		}
	}
	k10.canvas->updateCanvas();
	delay(500);
}

**运行结果:**当程序上传成功后,HUSKYLENS 2会自动切换到实例分割功能下,当同一类别的多个实例出现在画面中时可以识别同一类别的实例的数量,行空板K10显示指定实例的ID、中心点坐标、ID等相关数据。

Interface Diagram