开始之前:
1. 识别人体输出相关数据
可识别HUSKYLENS 2 视野内的人体,并将相关数据通过串口打印输出,可以读取的数据有:靠近HUSKYLENS 2 摄像头画面中心的人体姿态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_POSE_RECOGNITION);
}
void loop() {
huskylens.getResult(ALGORITHM_POSE_RECOGNITION);
if ((huskylens.available(ALGORITHM_POSE_RECOGNITION))) {
Serial.println((String("检测到的人体总数为:") + String((huskylens.getCachedResultNum(ALGORITHM_POSE_RECOGNITION)))));
Serial.println((String("靠近中心的人体ID:") + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_POSE_RECOGNITION), Result, ID)))));
Serial.println((String("靠近中心的人体名称:") + String((RET_ITEM_STR(huskylens.getCachedCenterResult(ALGORITHM_POSE_RECOGNITION), Result, name)))));
Serial.println((String("检测到的第1个人体的ID:") + String((RET_ITEM_NUM(huskylens.getCachedResultByIndex(ALGORITHM_POSE_RECOGNITION, 1-1), Result, ID)))));
}
delay(500);
}
通程序上传成功后,HUSKYLENS 2 进入姿态识别功能。将HUSKYLENS 2 的摄像头对准画面中的人体姿态进行学习,如何学习姿态详细操作请看:姿态识别功能说明
学习完成后打开串口监视器,观察输出结果。
**运行结果:**可输出检测到的人体总数;可按要求输出相应人体姿态ID号,已学习的人体姿态会按学习顺序分配ID号,未学习的姿态,ID号为0。
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_POSE_RECOGNITION);
}
void loop() {
huskylens.getResult(ALGORITHM_POSE_RECOGNITION);
if (((huskylens.getCachedResultByID(ALGORITHM_POSE_RECOGNITION, 1) != NULL))) {
Serial.println((String("画面中ID1的人体姿态总数为:") + String((huskylens.getCachedResultNumByID(ALGORITHM_POSE_RECOGNITION, 1)))));
Serial.println((String("ID1人体姿态名称为:") + String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_POSE_RECOGNITION, 1), Result, name)))));
Serial.println((String("检测到的第1个ID1的姿态的坐标为:") + String((String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_POSE_RECOGNITION, 1, 1-1), Result, xCenter))) + String((String(",") + String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_POSE_RECOGNITION, 1, 1-1), Result, yCenter)))))))));
}
delay(500);
}
**运行结果:**如图所示,可获取到画面中的姿态总数、画面中ID1姿态数量、名称,以及检测到的第一个ID1姿态的坐标位置