阅读 140

超好玩的"隔空操物"通过Python MediaPipe库实现

这篇文章主要介绍了python+mediapipe+opencv实现手部关键点检测功能(手势识别),本文仅仅简单介绍了mediapipe的使用,而mediapipe提供了大量关于图像识别等的方法,需要的朋友可以参考下

目录
  • 1.项目效果展示

    • 1.1:隔空音量控制

    • 1.2:隔空绘画

    • 1.3 :手势识别

    • 1.4:鼠标模拟

  • 2.所涉及到的库

    • 2.1:OpenCv简介

    • 2.2:MediaPipe简介

  • 3.项目环境搭建

    • 4.源码部分

      • 5.总结

        ???? 文章简介 :本篇文章的实战部分中主要使用到了 MediaPipe 与 OpenCv 两个库,实现了隔空操作的效果,主要有**隔空操作鼠标,隔空绘画,隔空控制音量与隔空手势识别 **????

        演示视频

        使用这个编程语言,我实现了隔空操物!!

        1.项目效果展示

        项目主要分为四个部分,分别是

        • 隔空音量控制

        • 隔空绘画

        • 隔空识别手势

        • 隔空操作鼠标

        下面是这四部分的演示效果

        1.1:隔空音量控制

        请添加图片描述

        1.2:隔空绘画

        请添加图片描述

        1.3 :手势识别

        请添加图片描述

        1.4:鼠标模拟

        请添加图片描述

        2.所涉及到的库

        上面这些应用的实现主要涉及到了两个库


        • OpenCv

        • MediaPipe

        2.1:OpenCv简介

        OpenCV是一个基于Apache2.0许可发行的跨平台计算机视觉与机器学习的软件库。

        可以运行在多种操作系统,例如Linux,Window,Mac OS等等。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

        2.2:MediaPipe简介

        MediaPipe是一由Google开发并开源的数据流处理机器学习应用开发框架。

        它是一个基于图的数据处理管线,用于构建使用了多种形式的数据源,如视频、音频、传感器数据以及任何时间序列数据。

        MediaPipe是跨平台的,可以运行在多种操作系统,工作站和服务器上,并支持移动端GPU加速。

        使用MediaPipe,可以将机器学习任务构建为一个图形的模块表示的数据流管道,包括推理模型和流媒体处理功能。

        3.项目环境搭建

        这些应用的环境方便比较简单,可以直接在pycharm里面进行安装对应的库即可使用。如果遇到库不能下载或者是超时,可以进行pip换源下载,本应用使用Python进行编写

        4.源码部分

        应用涉及到的源码比较多,这里就不一 一进行贴出来了。

        想要实践一下的同学可以私信我获取,或者是直接点击文章底部关注公众号,点击联系我添加备注源码获取 下面是关键部分代码的一些截取内容。

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        cap = cv2.VideoCapture(0#若使用外接摄像头 则更改为1或其他编号
        cap.set(3, wCam)
        cap.set(4, hCam)
        pTime = 0
        detector = handDetector()
         
        success, img = cap.read()
            img = detector.findHands(img)
            lmList = detector.findPosition(img, draw=False)
            pointList = [4, 8, 12, 16, 20]
            if len(lmList) != 0:
                countList = []
                if lmList[4][1] > lmList[3][1]:
                    countList.append(1)
                else:
                    countList.append(0)
                for i in range(1, 5):
                    if lmList[pointList[i]][2] < lmList[pointList[i] - 2][2]:
                        countList.append(1)
                    else:
                        countList.append(0)
                count = countList.count(1)
                HandImage = cv2.imread(f'FingerImg/{count}.jpg')
                HandImage = cv2.resize(HandImage, (150, 200))
                h, w, c = HandImage.shape
                img[0:h, 0:w] = HandImage
                cv2.putText(img, f'{int(count)}', (15, 400), cv2.FONT_HERSHEY_PLAIN, 15, (255, 0, 255), 10)

        5.总结

        上面这四个项目主要是调用到了一些机器学习的库进行代码的编写。感兴趣的小伙伴可以导入项目在自己的电脑上进行实操一下。

        到此这篇关于超好玩的"隔空操物"通过Python MediaPipe库实现的文章就介绍到这了

        原文链接:https://blog.csdn.net/weixin_45574790/article/details/122505077


        文章分类
        代码人生
        版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
        相关推荐