亚博microros小车-原生ubuntu支持系列:10-画笔

背景知识

基础框架还是用到了MediaPipe Hands,亚博microros小车-原生ubuntu支持系列:4-手部检测-优快云博客

为了方便对照,还是贴一下手部的图

其中,手指头尖是4,8,12,16,20.

检测到手指头是否漏出。

    #手指头漏出检测
    def fingersUp(self):
        fingers=[]
        # Thumb
        if (self.calc_angle(self.tipIds[0],
                            self.tipIds[0] - 1,
                            self.tipIds[0] - 2) > 150.0) and (
                self.calc_angle(
                    self.tipIds[0] - 1,
                    self.tipIds[0] - 2,
                    self.tipIds[0] - 3) > 150.0): fingers.append(1)
        else:
            fingers.append(0)
        # 4 finger
        for id in range(1, 5):
            if self.lmList[self.tipIds[id]][2] < self.lmList[self.tipIds[id] - 2][2]:
                fingers.append(1)
            else:
                fingers.append(0)
        return fingers

对于拇指,是点4,3,2和3,2,1点的计算角度。

余弦定理:c2 = a2 + b2 − 2ab cos(C)

先算了点的坐标,计算欧式距离,在根据余弦定理去计算。认为角432>150度和角321>150度是大拇指伸出.其余四指检测:是指尖点与-2点的,比如8跟6,12跟10比,坐标小的则认为伸出

lmList:[[0, 101, 392], [1, 161, 368], [2, 213, 318], [3, 246, 275], [4, 240, 232], [5, 188, 210], [6, 220, 134], [7, 239, 90], [8, 252, 50], [9, 142, 210], [10, 170, 139], [11, 189, 196], [12, 191, 245], [13, 95, 225], [14, 112, 174], [15, 136, 234], [16, 142, 277], [17, 51, 254], [18, 71, 218], [19, 97, 259], [20, 104, 292]]
fingers :[0, 1, 0, 0, 0]
lmList:[[0, 110, 381], [1, 169, 354], [2, 210, 298], [3, 220, 253], [4, 191, 220], [5, 211, 202], [6, 254, 134], [7, 278, 93], [8, 297, 56], [9, 168, 190], [10, 187, 102], [11, 208, 56], [12, 222, 17], [13, 123, 200], [14, 148, 142], [15, 166, 203], [16, 171, 247], [17, 82, 229], [18, 121, 204], [19, 140, 249], [20, 141, 283]]
fingers :[0, 1, 1, 0, 0]

这个需要结合手图去理解。

其他类似项目手部姿势识别,也都是以此识别出的手指点及坐标为基础,去计算手指角度、距离、是否伸出。来作为业务逻辑的判断前提。

画笔

右⼿⾷指和中指合并时是选择状态,同时弹出颜⾊选框,两指尖移动到对应颜⾊位置时,选中该颜⾊(⿊⾊为橡⽪擦);⾷指和中指分开始是绘画状态,可在画板上任意绘制。

src/yahboom_esp32_mediapipe/yahboom_esp32_mediap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bohu83

买个馒头吃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值