健身动作AI识别,仰卧起坐计数(含UI界面)

news2024/11/16 3:36:41

用Python和Mediapipe打造,让你的运动效果一目了然!
【技术揭秘】



利用Mediapipe的人体姿态估计,实时捕捉关键点,精确识别动作。
每一帧的关键点坐标和角度都被详细记录,为动作分析提供数据支持。
支持自定义动作训练,让AI更懂你的运动习惯。
【健身动作】

俯卧撑、引体向上、深蹲等常见健身动作,AI都能准确计数,帮你记录每一次进步。
界面友好,操作简单,让健身更加科学高效。
️【自定义功能】

可以根据自己的需求,训练或自定义动作,让AI成为你的私人健身教练。

opencv-python, mediapipe(用于人体姿态估计), 和 tkinter(用于GUI)

安装必要的库:

import cv2
import mediapipe as mp
import tkinter as tk
from PIL import Image, ImageTk

# 初始化Mediapipe的Pose检测
mp_drawing = mp.solutions.drawing_utils
mp_pose = mp.solutions.pose
pose = mp_pose.Pose(min_detection_confidence=0.5, min_tracking_confidence=0.5)

# 定义一个函数来检测仰卧起坐
def detect_sit_up(frame):
    image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    image.flags.writeable = False
    results = pose.process(image)
    image.flags.writeable = True
    image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
    
    if results.pose_landmarks:
        # 获取关键点
        landmarks = results.pose_landmarks.landmark
        hip = landmarks[mp_pose.PoseLandmark.LEFT_HIP].y
        knee = landmarks[mp_pose.PoseLandmark.LEFT_KNEE].y
        ankle = landmarks[mp_pose.PoseLandmark.LEFT_ANKLE].y
        
        # 判断是否完成一次仰卧起坐
        if hip < knee and hip < ankle:
            return True
    return False

# 定义一个函数来更新UI中的计数器
def update_counter(count):
    count_label.config(text=f"Count: {count}")

# 主程序
def main():
    global root
    cap = cv2.VideoCapture(0)
    sit_up_count = 0
    
    while True:
        ret, frame = cap.read()
        if not ret:
            break
        
        # 检测仰卧起坐
        is_sit_up = detect_sit_up(frame)
        
        # 如果检测到完成一次仰卧起坐,则增加计数
        if is_sit_up:
            sit_up_count += 1
            update_counter(sit_up_count)
        
        # 显示视频帧
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        img = Image.fromarray(frame)
        img_tk = ImageTk.PhotoImage(image=img)
        video_label.imgtk = img_tk
        video_label.configure(image=img_tk)
        
        root.update_idletasks()
        root.update()

# UI界面
root = tk.Tk()
root.title("Sit-Up Counter")

video_label = tk.Label(root)
video_label.pack()

count_label = tk.Label(root, text="Count: 0")
count_label.pack()

main()

此外,为了使代码运行,你需要确保你的环境中安装了所有必需的库,并且摄像头可以正常工作。

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

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

相关文章

Jave-this关键字

目录 1.this关键字 先看一段代码&#xff0c;并分析问题 什么是this 案例演示 2.this的注意事项和使用细节 1.this关键字 先看一段代码&#xff0c;并分析问题 什么是this this就 代表的是当前对象。 this可以大概理解成“我的” &#xff0c;比如我的书包&#xff0c;这…

基于Java中的SSM框架实现大创项目申报管理系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现大创项目申报管理系统演示 摘要 经济的高速发展进一步推动了种类繁多的项目落地&#xff0c;传统的项目在申报过程中主要通过纸质文件的方式实现申报信息的传递&#xff0c;同时不同的项目内容所对应的申报资料模板也有所差异&#xff0c;人工整理的提…

没有显卡,怎么玩AI绘图?

或许很多人跟我一样&#xff0c;没有显卡&#xff0c;但又很想玩AI绘图&#xff0c;但本地绘图怕是无缘了&#xff0c;只能借助云GPU的方式了。 今天跟大家分享一下一个简单目前可白嫖无门槛的方法实现无显卡也能玩AI绘图。 方案就是ComfyUIBizyAir云节点。 ComfyUI介绍 来…

【软考】虚拟存储器

目录 1. 说明2. 定义3. 工作原理4. 管理方式5. 优点6. 例题6.1 例题1 1. 说明 1.在概念上&#xff0c;可以将主存存储器看作一个由若干个字节构成的存储空间&#xff0c;每个字节(称为一个存储单元)有一个地址编号&#xff0c;主存单元的该地址称为物理地址(Physical Address)…

数值分析——三次样条插值

系列文章目录 数值分析——拉格朗日插值 数值分析——牛顿插值多项式 数值分析——埃尔米特&#xff08;Hermit&#xff09;插值 数值分析——分段低次插值 文章目录 系列文章目录前言一、理论推导1.三次样条函数2.三次样条插值函数的求解条件3.三次样条插值函数的建立 二、MA…

简单反射型XSS的复现

xss反射型攻击&#xff1a; 1.最简单的漏洞复现&#xff1a; 这里我们有一个最简单的网页&#xff1a;由于地址不存在&#xff0c;所以图片加载不出来。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta…

FP8量化

https://arxiv.org/html/2402.16363v5 LLama3.1用了FP8量化&#xff1a; FP8也可以用scaling factor来扩大表示范围&#xff0c;对吧&#xff1f;

开源在线剪切板 PrivateBin 安装和使用教程

我们经常需要在网上快速分享一些文本内容&#xff0c;比如代码片段、临时笔记或者敏感信息。传统的在线剪贴板服务虽然使用方便&#xff0c;但往往缺乏足够的隐私保护。 那么&#xff0c;有没有一种既方便又安全的在线文本分享方式呢&#xff1f;今天我要向大家推荐一个优秀的…

常见的图像融合方法

这里我们将介绍一些常用的图像融合方式&#xff0c;并不涉及到诸如CutMix、MixUp、TokenMix、Mosaic、Copy-Paste等图像增强方法。 首先是读取图像&#xff0c;我们这边采用了PIL库进行&#xff0c;那么读进来就应该是一个Image对象。下面介绍Image对象与array的转换方式。 f…

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测

土地利用/土地覆盖数据是生态、环境和气象等领域众多模型的重要输入参数之一。基于遥感影像解译&#xff0c;可获取历史或当前任何一个区域的土地利用/土地覆盖数据&#xff0c;用于评估区域的生态环境变化、评价重大生态工程建设成效等。借助CLUE模型&#xff0c;实现对未来土…

AI9-文本识别

本章主要介绍文本识别算法的理论知识,包括背景介绍、算法分类和部分经典论文思路。 通过本章的学习,你可以掌握: 1. 文本识别的目标 2. 文本识别算法的分类 3. 各类算法的典型思想 1 背景介绍 文本识别是OCR(Optical Character Recognition)的一个子任务,其任务为识别一个…

pytorch的入门使用

pytorch安装略&#xff01; 一.张量Tensor 张量是一个统称其中包含0阶&#xff0c;1阶&#xff0c;2阶&#xff0c;3阶&#xff0c;4阶&#xff0c;.......n阶。 0阶&#xff1a;标量&#xff0c;常数&#xff0c;0-D Tensor 1阶&#xff1a;向量&#xff0c;1-D Tensor 2…

使用java反编译工具jad

文章目录 反编译工具 JAD下载配置环境变量使用其他反编译工具 JD-GUI 反编译工具 JAD 反编译是指将编译后的字节码文件&#xff08;.class 文件&#xff09;转换回可读的 Java 源代码。JAD (Java Decompiler) 是一个经典的反编译工具&#xff0c;广泛用于将 Java 字节码反编译…

国内AI大模型168个,哪个最有前途?

168个国产大模型&#xff0c;都是什么来头&#xff1f; 1785年&#xff0c;瓦特改进了蒸汽机&#xff0c;人类从此摆脱了手工业的桎梏&#xff0c;迈向辉煌的蒸汽时代。 1870年&#xff0c;第二次工业革命光芒四溢&#xff0c;人类踏上了电气时代的漫长征程。 20世纪70年代后…

手机有两个卡槽分别放什么卡,这篇文章建议收藏!

你发现了吗&#xff0c;我们现在对于手机卡的需求是越来越大了&#xff0c;相信大多数用户手上都不止一张SIM卡&#xff0c;大部分都是双卡&#xff0c;甚至三卡了&#xff0c;那么&#xff0c;这些卡槽你真的利用对了吗&#xff1f; 这篇文章就告诉大家&#xff0c;如何更好的…

【Windows】Beyond Compare 5(文件数据对比神器) 软件介绍

今天给大家介绍的软件叫Beyond Compare&#xff0c;这是一个文件数据对比神器&#xff0c;可以让你从茫茫数据、文字中解放出来。 Beyond Compare 是一款功能强大的文件和文件夹比较工具&#xff0c;主要用于比较和同步文件、文件夹及其内容。以下是该软件的主要特点和功能&…

一款免费开源的在线白板,手绘风格在线画图神器

Excalidraw 是一款开源的虚拟手绘风格在线白板工具&#xff0c;它专注于提供简单、直观且功能丰富的绘图体验。这款工具特别适合用于创建图表、线框图、思维导图、流程图以及其他各种类型的图形和视觉内容。 Excalidraw 的主要特点包括&#xff1a; 免费开源&#xff1a;Exca…

如何正确地实现虚拟类?

在 Python 中&#xff0c;所谓的虚拟类通常是指抽象基类&#xff08;Abstract Base Class&#xff0c;简称 ABC&#xff09;。抽象基类不可实例化&#xff0c;其主要作用是定义一组抽象方法&#xff0c;子类必须实现这些抽象方法才能被实例化。 要正确实现虚拟类&#xff08;抽…

新时代来临,跟60后、70后的奢侈消费观念说拜拜吧!

在长达几十年的改革开放壮丽征程中&#xff0c;60后与70后的消费观念深刻塑造了家庭经济的面貌&#xff0c;他们倾尽所有为子女铺设未来之路&#xff0c;从婚房婚车到教育投资&#xff0c;无一不体现了深沉的父爱母爱。然而&#xff0c;随着时代的变迁&#xff0c;尤其是当中国…

连接数据库报错bad handshake

堡垒机账号没有授权访问权限