开始之前:
1. 识别二维码输出相关数据
HUSKYLENS 2能识别出现在画面中的二维码,可以通过编程获取画面中检测到的二维码相关数据。可以读取的二维码数据有:检测到的二维码总数,指定二维码的数据,包括二维码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_QRCODE_RECOGNITION);
}
void loop() {
huskylens.getResult(ALGORITHM_QRCODE_RECOGNITION);
if ((huskylens.available(ALGORITHM_QRCODE_RECOGNITION))) {
k10.canvas->canvasText((String("靠中心的二维码ID:") + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_QRCODE_RECOGNITION), Result, ID)))), 1, 0x0000FF);
k10.canvas->canvasText((String("二维码总数:") + String((huskylens.getCachedResultNum(ALGORITHM_QRCODE_RECOGNITION)))), 3, 0x0000FF);
k10.canvas->canvasText((String("第一个二维码ID:") + String((RET_ITEM_NUM(huskylens.getCachedResultByIndex(ALGORITHM_QRCODE_RECOGNITION, 1-1), Result, ID)))), 5, 0x0000FF);
}
k10.canvas->updateCanvas();
delay(50);
}
上传程序,等待程序上传完成后。
将HuskyLens 2的摄像头对准画面中的二维码可进行学习,如何学习二维码详细操作请看二维码识别功能-学习二维码
将HUSKYLENS 2的摄像头对准二维码,观察K10屏幕显示的结果。
**运行结果:**如图所示,可输出检测到的二维码数量(无论是否该二维码已学习)、可输出指定的二维码ID,未学习的二维码则为0。
2. 获取画面中指定二维码的相关数据
HuskyLens 2识别二维码后,可获取画面中指定二维码的相关数据。例如,判断某个指定ID的二维码是否在画面中、可获取画面中相同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_QRCODE_RECOGNITION);
}
void loop() {
huskylens.getResult(ALGORITHM_QRCODE_RECOGNITION);
if ((huskylens.available(ALGORITHM_QRCODE_RECOGNITION))) {
if (((huskylens.getCachedResultByID(ALGORITHM_QRCODE_RECOGNITION, 0) != NULL))) {
k10.canvas->canvasText((String("ID0二维码总数:") + String((huskylens.getCachedResultNumByID(ALGORITHM_QRCODE_RECOGNITION, 0)))), 1, 0x0000FF);
k10.canvas->canvasText("第一个ID0二维码", 3, 0x0000FF);
k10.canvas->canvasText((String("的内容:") + String((RET_ITEM_STR(huskylens.getCachedIndexResultByID(ALGORITHM_QRCODE_RECOGNITION, 0, 1-1), Result, content)))), 4, 0x0000FF);
k10.canvas->canvasText("第二个ID0二维码", 6, 0x0000FF);
k10.canvas->canvasText((String("的坐标:") + String((String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_QRCODE_RECOGNITION, 0, 2-1), Result, xCenter))) + String((String(",") + String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_QRCODE_RECOGNITION, 0, 2-1), Result, yCenter)))))))), 7, 0x0000FF);
}
}
k10.canvas->updateCanvas();
delay(50);
}
**运行结果:**如图所示,画面中有两个未学习的二维码(ID为0),第一个ID0二维码是右边的,该标签的内容是“南瓜面包”,第二个ID0二维码是左边的,该二维码的坐标是(138,228)。