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

用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()

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

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
人工智能动作识别是一种利用机器学习和深度学习技术,让计算机能够识别和理解人类动作的技术。通过分析人体姿势、动作轨迹和关节角等信息,人工智能系统可以准确地判断人类的动作意图和动作状态。 人工智能动作识别在多个领域有着广泛的应用。在健身和运动领域,人工智能可以通过识别人类的动作姿势和运动方式,为用户提供准确的运动指导和反馈,帮助用户改善运动技巧和姿势,避免运动伤害。 在医疗领域,人工智能动作识别可以用于康复训练和监测。通过分析患者的动作,系统可以评估康复训练的进展情况,并提供针对性的康复建议。同时,人工智能还可以监测老年人或患有运动障碍的人的日常动作,及时发现异常情况并提供援助。 此外,人工智能动作识别还可以应用于智能安防系统中。通过分析监控视频中的人体动作,系统可以自动识别和报警异常行为,提升安防系统的效能。 人工智能动作识别的关键技术包括图像识别、模式识别和深度学习等。通过使用大量标注好的训练数据进行模型的训练,人工智能系统可以学习到人类动作的特征和模式,从而达到准确、可靠地识别和分析人体动作的目的。 人工智能动作识别在实际应用中还面临一些挑战,如光照变化、背景干扰等问题。但随着技术的不断进步和研究的深入,相信人工智能动作识别将会在更多领域得到广泛应用并不断提升人类生活的质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值