开始之前:

1. 识别手势输出相关数据

在手势识别的功能下HUSKYLENS 2 可以检测出手掌、绘制手掌关键点、学习手势并识别已学习的手势。可以通过程序将相关数据通过串口打印输出。可以读取的数据有:靠近HUSKYLENS 2 摄像头画面中心的手势ID号、画面中检测到的手势总数、检测到的第一个手势ID号。

示例程序如下。

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


// 主程序开始
void setup() {
	Serial.begin(9600);
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	huskylens.switchAlgorithm(ALGORITHM_HAND_RECOGNITION);
}
void loop() {
	huskylens.getResult(ALGORITHM_HAND_RECOGNITION);
	if ((huskylens.available(ALGORITHM_HAND_RECOGNITION))) {
		Serial.println((String("靠近中心的手势ID:") + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_HAND_RECOGNITION), Result, ID)))));
		Serial.println((String("检测到是手势总数为:") + String((huskylens.getCachedResultNum(ALGORITHM_HAND_RECOGNITION)))));
		Serial.println((String("第1个检测到的手势ID为:") + String((RET_ITEM_NUM(huskylens.getCachedResultByIndex(ALGORITHM_HAND_RECOGNITION, 1-1), Result, ID)))));
	}
	delay(500);
}

程序上传完成后HUSKYLENS 2 进入手势识别功能。将HUSKYLENS 2 的摄像头对准画面中的手势进行学习,如何学习手势详细操作请看:手势识别功能说明

打开串口监视器,观察输出结果。

**运行结果:**可输出检测到的手势总数,不管是否为学习过的手势,只要检测到手势都会计数(方框框出即检测为手势)。可按要求输出相应手势的ID号,学习过的手势会按照学习顺序分配ID号,未学习过的手势,其ID号为0。

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_HAND_RECOGNITION);
}
void loop() {
	huskylens.getResult(ALGORITHM_HAND_RECOGNITION);
	if (((huskylens.getCachedResultByID(ALGORITHM_HAND_RECOGNITION, 1) != NULL))) {
		Serial.println((String("画面中的ID1手势总数") + String((huskylens.getCachedResultNumByID(ALGORITHM_HAND_RECOGNITION, 1)))));
		Serial.println((String("ID1手势名称:") + String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_HAND_RECOGNITION, 1), Result, name)))));
		Serial.println((String("检测到的第1个ID1的手势坐标:") + String((String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_HAND_RECOGNITION, 1, 1-1), Result, xCenter))) + String((String(",") + String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_HAND_RECOGNITION, 1, 1-1), Result, yCenter)))))))));
	}
	delay(500);
}

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

Interface Diagram