基于python的mediapipe姿态识别 动作识别 人体关健点 实现跳绳状态判别 计数功能

news2024/11/13 18:20:59

 

基于Python的MediaPipe姿态识别实现跳绳状态判别与计数功能

项目概述

本项目旨在利用Google的MediaPipe库,结合姿态识别技术,实现对跳绳动作的实时检测与计数功能。通过识别人体关键点,系统能够准确判断跳绳动作的状态,并实时统计跳绳次数。该项目适用于健身应用程序、体育训练分析等领域,为用户提供准确的运动数据支持。

技术栈
  • Python:开发语言。
  • MediaPipe:用于姿态识别的核心库。
  • OpenCV:用于图像处理和视频流的捕获。
  • NumPy:进行数值计算。
系统功能
  1. 姿态识别:利用MediaPipe的姿态识别功能,实时检测人体的关键点。
  2. 动作识别:根据关键点的位置和变化,判断是否为跳绳动作。
  3. 计数功能:实时统计跳绳次数,并在界面上显示。
  4. 实时反馈:在界面上显示当前跳绳状态和次数。
系统特点
  1. 高精度识别:MediaPipe提供了高精度的姿态识别能力,能够准确检测人体关键点。
  2. 实时处理:系统能够在视频流中实时处理每一帧图像,实时反馈跳绳状态和次数。
  3. 用户友好:通过图形界面,用户可以轻松启动和停止检测,并查看实时数据。
系统架构
  1. 输入源选择:用户可以选择摄像头作为输入源。
  2. 姿态检测:使用MediaPipe的姿态检测功能,实时检测人体关键点。
  3. 动作识别:根据关键点的变化,判断是否为跳绳动作。
  4. 计数功能:统计跳绳次数,并在界面上显示。
  5. 结果展示:在GUI界面上显示跳绳状态和次数。
关键技术
  1. MediaPipe姿态检测:MediaPipe提供了高精度的姿态检测功能,能够实时检测人体的多个关键点。
  2. 动作识别算法:通过分析关键点的位置和变化,判断是否为跳绳动作。
  3. 计数逻辑:根据动作识别结果,统计跳绳次数。
系统流程
  1. 启动摄像头:用户启动摄像头,系统开始捕获视频流。
  2. 姿态检测:使用MediaPipe的姿态检测功能,实时检测人体关键点。
  3. 动作识别:根据关键点的位置和变化,判断是否为跳绳动作。
  4. 计数功能:统计跳绳次数,并在界面上显示。
  5. 实时反馈:在GUI界面上显示跳绳状态和次数。
示例代码

以下是一个简化的代码示例,展示了如何使用MediaPipe姿态检测功能进行跳绳动作的识别和计数:

1import cv2
2import mediapipe as mp
3import numpy as np
4
5# 初始化MediaPipe姿态检测模块
6mp_drawing = mp.solutions.drawing_utils
7mp_pose = mp.solutions.pose
8
9# 初始化计数器
10count = 0
11state = "down"
12
13# 初始化摄像头
14cap = cv2.VideoCapture(0)
15
16# 设置MediaPipe姿态检测参数
17with mp_pose.Pose(min_detection_confidence=0.5, min_tracking_confidence=0.5) as pose:
18    while cap.isOpened():
19        ret, frame = cap.read()
20        
21        # 转换图像颜色格式
22        image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
23        image.flags.writeable = False
24        
25        # 进行姿态检测
26        results = pose.process(image)
27        
28        # 重新设置图像颜色格式
29        image.flags.writeable = True
30        image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
31        
32        # 绘制姿态关键点
33        mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_pose.POSE_CONNECTIONS,
34                                  mp_drawing.DrawingSpec(color=(245, 117, 66), thickness=2, circle_radius=2),
35                                  mp_drawing.DrawingSpec(color=(245, 66, 230), thickness=2, circle_radius=2))
36        
37        # 获取关键点坐标
38        try:
39            landmarks = results.pose_landmarks.landmark
40            
41            # 获取肩膀和臀部的坐标
42            shoulder = [landmarks[mp_pose.PoseLandmark.LEFT_SHOULDER.value].x, landmarks[mp_pose.PoseLandmark.LEFT_SHOULDER.value].y]
43            hip = [landmarks[mp_pose.PoseLandmark.LEFT_HIP.value].x, landmarks[mp_pose.PoseLandmark.LEFT_HIP.value].y]
44            
45            # 计算肩膀和臀部之间的距离
46            distance = np.sqrt((shoulder[0] - hip[0])**2 + (shoulder[1] - hip[1])**2)
47            
48            # 根据距离判断跳绳状态
49            if distance > 0.5 and state == "down":
50                state = "up"
51            elif distance < 0.3 and state == "up":
52                state = "down"
53                count += 1
54        
55        except Exception as e:
56            pass
57        
58        # 显示计数结果
59        cv2.rectangle(image, (0, 0), (225, 73), (245, 117, 16), -1)
60        cv2.putText(image, 'Jumps: ' + str(count), (15, 60), cv2.FONT_HERSHEY_SIMPLEX, 2, (255, 255, 255), 2, cv2.LINE_AA)
61        
62        # 显示图像
63        cv2.imshow('Jump Rope Counter', image)
64        
65        if cv2.waitKey(10) & 0xFF == ord('q'):
66            break
67
68# 释放资源
69cap.release()
70cv2.destroyAllWindows()

总结

本项目通过结合MediaPipe的姿态识别技术和OpenCV的视频处理功能,实现了对跳绳动作的实时检测与计数。系统能够在视频流中实时检测人体关键点,并根据关键点的变化判断跳绳动作,实时统计跳绳次数。该系统具有高精度和实时性,适用于健身应用程序和体育训练分析等多个领域。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2118951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java入门:07.Java中的面向对象03

11 this关键字 this关键字有两个作用 第一个作用&#xff0c;用来调用重载的构造方法 public class Test3{public static void main(String[] args){new User();new User("ls");new User("ls","女");} } ​ class User{String name ;String sex…

Autosar工程师必读:ETAS工具链自动化实战指南<三>

----自动化不仅是一种技术&#xff0c;更是一种思维方式&#xff0c;它将帮助我们在快节奏的工作环境中保持领先&#xff01; 目录 往期推荐 自动化命令--generate 命令语法 参数说明 命令使用前提 场景1&#xff1a;BSW代码生成 场景2&#xff1a;RTE代码生成 场景3&a…

对非洲33国免关税!非洲市场不容错过

2024年9月5日中非合作论坛峰会在北京隆重召开&#xff0c;会议后宣布对非洲33个国家实行0关税的优惠政策&#xff0c;并且在未来三年&#xff0c;推动中国企业对非投资不少于700亿元人民币。 自然而然的&#xff0c;中非友好关系必然会带动中国对非洲市场的出口&#xff0c;近…

云计算实训44——K8S及pod相关介绍

一、K8S基本概念 1、k8s是什么 K8S是Kubernetes的 缩写&#xff0c;由于k 和 s 之间有⼋个字符&#xff0c;所以因此得名。 Kubernetes 是⼀个可移植的、可扩展的开源平台&#xff0c;⽤于管理容器化 的⼯作负载和服务&#xff0c;可促进声 明式配置和⾃动化。 2、k8s的功能…

STM32F1+HAL库+FreeTOTS学习10——任务相关API函数使用

STM32F1HAL库FreeTOTS学习10——任务相关API函数使用 任务相关API函数1. uxTaskPriorityGet()2. vTaskPrioritySet()3. uxTaskGetNumberOfTasks()4. uxTaskGetSystemState()5. vTaskGetInfo()6. xTaskGetCurrentHandle()7. xTaskGetHandle()8. xTaskGetIdleTaskHandle()9. uxTa…

你需要掌握的算法:快慢指针

文章目录 前言龟兔赛跑乌龟能否追上兔子乌龟与兔子在何处相遇龟兔问题的推论 快慢指针基础概念发展历史 快慢指针的应用检测链表是否有环找到链表的中间节点计算链表的环长度找到链表环的入口节点 小结 前言 在处理链表数据结构时&#xff0c;快慢指针是一种非常高效的算法技巧…

鸡尾酒排序算法

目录 引言 一、概念 二、算法思想 三、图例解释 1.采用冒泡排序&#xff1a; 2.采用鸡尾酒排序&#xff1a; 3.对比总结 四、算法实现 1.代码实现 2.运行结果 3.代码解释 五、总结 引言 鸡尾酒排序&#xff08;Cocktail Sort&#xff09;&#xff0c;也被称为双向冒…

同一天!蚂蚁集团宣布将发布3款AI新产品!腾讯、零一万物、面壁智能推出最新大模型|AI日报

文章推荐 缓解父母焦虑&#xff01;详细实测&#xff01;这些免费AI可以成为孩子提高学习能力的得力助手&#xff01; 附送试听地址&#xff01;OpenAI ChatGPT被曝将新增8种语音&#xff01;英特尔酷睿Ultra 200V正式发布&#xff5c;AI日报 今日热点 蚂蚁将发布三款AI新产…

Zynq7020 SDK 初学篇(4)- PL 端 GPIO

1.开发背景 基于 PS 端 GPIO 的基础上&#xff0c;如何调用 PL 端 GPIO 的输入输出 2.开发需求 PL 端按键控制 PL 端 LED 3.开发环境 Zynq7020 Vivado2017.4 4.实现步骤 4.1 设计配置 这里设置 PIO 数量 3 个 由于 PL 端不像 PS 端一样绑定 GPIO&#xff0c;所以需要对上面…

内容营销服务,照亮您的独特优势,助力业务增长

内容营销公司通常会承诺过高但交付不足&#xff0c;而在Digital Commerce Partners&#xff0c;我们走的是相反的方向。我们会调低&#xff08;然后超越&#xff09;预期。 由于我们是Copyblogger的SEO和内容营销代理商&#xff0c;我们知道伟大的事情需要时间——这意味着吸引…

【最新华为OD机试E卷-支持在线评测】通过软盘拷贝文件(200分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试E卷,全、新、准,题目覆盖率达 95% 以上,支持…

人工智能安全治理框架导图

资源链接&#xff1a;《人工智能安全治理框架》1.0版发布_中央网络安全和信息化委员会办公室

【Python机器学习】循环神经网络(RNN)——循环网络的记忆功能

文档中的词很少是完全独立的&#xff0c;它们的出现会影响文档中的其他词或者收到文档中其他词的影响&#xff1a; The stolen car sped into the arena. The clown car sped into the arena. 这两句话可能会产生两种完全不同的情感感受。这两个句子的形容词、名词、动词、介词…

算法入门-深度优先搜索2

第六部分&#xff1a;深度优先搜索 104.二叉树的最大深度&#xff08;简单&#xff09; 题目&#xff1a;给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;ro…

Tomcat配置及Servlet相关

目录 Eclipse配置Tomcat 1.配置服务器运行环境 2.新建服务器 3.新建动态Web项目 4.创建类继承HttpServlet 5.启动服务器 6.测试访问 请求转发与重定向 请求转发 重定向 Servlet的作用域 Servlet生命周期 这里以Eclipse为例&#xff0c;IDEA配置参考&#xff1a;IDE…

若依框架使用MyBatis-Plus中的baseMapper的方法报错Invalid bound statement (not found):

Invalid bound statement (not found): com.ruoyi.system.mapper.hc.HcOrderMapper.selectList 解决方法 MybatisSqlSessionFactoryBean sessionFactory new MybatisSqlSessionFactoryBean(); 使用 MybatisSqlSessionFactoryBean 而非 SqlSessionFactoryBean 的原因 MyBatis-…

卷轴模式系统源码开发之功能技术分析

随着互联网经济的蓬勃发展&#xff0c;电商平台之间的竞争日益激烈。为了吸引和保留用户&#xff0c;许多电商平台开始探索和采用创新的商业模式。其中&#xff0c;“卷轴模式”作为一种结合了积分奖励和任务兑换机制的新颖模式&#xff0c;逐渐受到了业界的关注。本文将从技术…

智能提醒助理系列-小程序分享到朋友圈

本系列文章记录“智能提醒助理”wx公众号 建设历程&#xff0c;记录实践经验、巩固知识点、锻炼总结能力。 本篇介绍微信小程序如何分享到朋友圈&#xff0c;以及遇到的登录无权限问题和解决方案。 一、需求出发点 智能提醒小程序的推广是一个难点&#xff0c;朋友圈是一个必要…

柯桥外语学习生活日语之与台风有关的日语表达

与台风有关的日语表达&#xff1a; 台風が近づいている (たいふうがちかづいている) - 台风正在靠近 台風が上陸する (たいふうがじょうりくする) - 台风登陆 台風の進路 (たいふうのしんろ) - 台风的路径 強い台風 (つよいたいふう) - 强烈的台风 台風の目 (たいふうのめ…

深度学习的模型知识点介绍和总结

关注公众号&#xff1a;『AI学习星球』 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号滴滴我 文章目录 1. 神经网络基础1.1 人工神经网络&#xff08;ANN&#xff09;1.2 介绍下激活函数 2. 卷积神经网络&#xff08;CNN&#xff09;2.1 卷积层2.2 池化层2.3 全连接层…