开始之前:
1. 识别颜色输出相关数据
可识别HUSKYLENS 2视野内的色块,并输出色块相关数据,可以读取的数据有:检测到的色块总数、已学习的色块总数、靠近HUSKYLENS 2摄像头画面中心的色块ID号、第一个检测到的色块ID号等。
示例程序如下。
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from unihiker import GUI
from pinpong.board import Board
from dfrobot_huskylensv2 import *
u_gui=GUI()
Board().begin()
huskylens = HuskylensV2_I2C()
huskylens.knock()
huskylens.switchAlgorithm(ALGORITHM_COLOR_RECOGNITION)
line1=u_gui.draw_text(text="色块总数:",x=0,y=0,font_size=18, color="#0000FF")
line2=u_gui.draw_text(text="已学习色块总数:",x=0,y=40,font_size=18, color="#0000FF")
line3=u_gui.draw_text(text="靠近中心的色块ID:",x=0,y=80,font_size=18, color="#0000FF")
line4=u_gui.draw_text(text="第一个色块ID:",x=0,y=120,font_size=18, color="#0000FF")
while True:
huskylens.getResult(ALGORITHM_COLOR_RECOGNITION)
if (huskylens.available(ALGORITHM_COLOR_RECOGNITION)):
line1.config(text=(str("色块总数:") + str((huskylens.getCachedResultNum(ALGORITHM_COLOR_RECOGNITION)))))
line2.config(text=(str("已学习色块总数:") + str((huskylens.getCachedResultMaxID(ALGORITHM_COLOR_RECOGNITION)))))
line3.config(text=(str("靠近中心的色块ID:") + str((huskylens.getCachedCenterResult(ALGORITHM_COLOR_RECOGNITION).ID if huskylens.getCachedCenterResult(ALGORITHM_COLOR_RECOGNITION) else -1))))
line4.config(text=(str("第一个色块ID:") + str((huskylens.getCachedResultByIndex(ALGORITHM_COLOR_RECOGNITION, 1-1).ID if huskylens.getCachedResultByIndex(ALGORITHM_COLOR_RECOGNITION, 1-1) else -1))))
在Mind+中点击运行,等待程序上传完成。
将HUSKYLENS 2的十字光标对准色块进行学习,如何学习颜色详细操作请看:二哈识图 2 颜色识别功能说明。
学习完成后,将HUSKYLENS 2摄像头对准色块,观察输出结果。
**运行结果:**可输出检测到的色块总数,无论该色块是否已学习,只要方框框出色块,就会计数。可按要求输出相应数据,如第二行输出的是已学习的色块总数。第三、四行输出的是指定的色块ID号,其中靠近画面中心的色块被白框框出,即未学习的色块,因此输出“靠近中心的色块ID号”为0。
2. 获取指定颜色的相关数据
HUSKYLENS 2识别颜色后,可获取画面中指定颜色的相关数据。例如,判断某个指定的颜色是否在画面中、指定颜色的名称、可获取画面中相同的指定颜色的色块数量,当画面中出现多个相同颜色的色块时,可指定获取其中某个色块的相关参数,包括名称、X/Y坐标、宽度、高度。
示例程序如下:
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from unihiker import GUI
from pinpong.board import Board
from dfrobot_huskylensv2 import *
u_gui=GUI()
Board().begin()
huskylens = HuskylensV2_I2C()
huskylens.knock()
huskylens.switchAlgorithm(ALGORITHM_COLOR_RECOGNITION)
line1=u_gui.draw_text(text="ID1色块总数:",x=0,y=0,font_size=18, color="#0000FF")
line2=u_gui.draw_text(text="ID1色块名称:",x=0,y=40,font_size=18, color="#0000FF")
line3=u_gui.draw_text(text="第一个ID1色块",x=0,y=80,font_size=18, color="#0000FF")
line4=u_gui.draw_text(text="的坐标:",x=0,y=110,font_size=18, color="#0000FF")
while True:
huskylens.getResult(ALGORITHM_COLOR_RECOGNITION)
if (huskylens.available(ALGORITHM_COLOR_RECOGNITION)):
if ((huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 1) is not None)):
line1.config(text=(str("ID1色块总数:") + str((huskylens.getCachedResultNumByID(ALGORITHM_COLOR_RECOGNITION, 1)))))
line2.config(text=(str("ID1色块名称:") + str((huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 1).name if huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 1) else -1))))
line4.config(text=(str("的坐标:") + str((str((huskylens.getCachedIndexResultByID(ALGORITHM_COLOR_RECOGNITION, 1, 1-1).xCenter if huskylens.getCachedIndexResultByID(ALGORITHM_COLOR_RECOGNITION, 1, 1-1) else -1)) + str((str(",") + str((huskylens.getCachedIndexResultByID(ALGORITHM_COLOR_RECOGNITION, 1, 1-1).yCenter if huskylens.getCachedIndexResultByID(ALGORITHM_COLOR_RECOGNITION, 1, 1-1) else -1))))))))
**运行结果:**如图所示,可获取到画面中ID1的色块总数、ID1的色块名称,以及第一个检测到的ID1色块的坐标位置。(颜色名称可以自定义,默认为“颜色”,设置名字详见二哈识图 2 颜色识别功能说明