5.10 感知手势

如果你遇到一种机器能识别自己的手势,用手势给机器发指令,机器按照手势指令工作,这想想都是一件很酷的事儿!

BlueFi的集成光学传感器具有手势识别功能,能够识别四个方向的挥手手势:向上、向下、向左、向右。

5.10.1 识别手势的方向

为了了解手势传感器的识别结果,我们将手势识别的结果用多行文本简单地显示到屏幕上。示例代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import time
from hiibot_bluefi.sensors import Sensors
from hiibot_bluefi.screen import Screen
sensor = Sensors()
gesture = sensor.gesture
screen = Screen()
show_data = screen.simple_text_display(title="BlueFi Light sensor", title_scale=1, text_scale=2)
while True:
    gesture = sensor.gesture
    show_data[3].text = "gesture: {}".format(gesture)
    show_data.show()
    time.sleep(0.2)

程序保存成功后,用你的手在集成光学传感器上方约2公分左右,并分别向四个挥手,观察不同方向的手势与手势识别结果(0~4)之间的关系。

5.10.2 用手势向计算机发指令

这个示例中,我们用四种手势告知BlueFi播放不同的音调,让自己临空弹奏音乐。示例代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import time
from hiibot_bluefi.soundio import SoundOut
from hiibot_bluefi.sensors import Sensors
from hiibot_bluefi.screen import Screen
spk = SoundOut()
spk.enable = 1
sensor = Sensors()
gesture = sensor.gesture
screen = Screen()
show_data = screen.simple_text_display(title="BlueFi Light sensor", title_scale=1, text_scale=2)
while True:
    gesture = sensor.gesture
    show_data[3].text = "gesture: {}".format(gesture)
    show_data.show()
    if gesture==1:
        spk.play_midi(86, 1/2)
    elif gesture==2:
        spk.play_midi(84, 1/2)
    elif gesture==3:
        spk.play_midi(88, 1/2)
    elif gesture==4:
        spk.play_midi(89, 1/2)
    else:
        time.sleep(0.1)

这个示例程序的关键语句是“while True:”循环程序块内的嵌套逻辑,根据识别的手势结果播放对应的midi音节。