設計門戶網(wǎng)站seo網(wǎng)站診斷流程
用Python和Mediapipe打造,讓你的運動效果一目了然!
【技術揭秘】
利用Mediapipe的人體姿態(tài)估計,實時捕捉關鍵點,精確識別動作。
每一幀的關鍵點坐標和角度都被詳細記錄,為動作分析提供數(shù)據(jù)支持。
支持自定義動作訓練,讓AI更懂你的運動習慣。
【健身動作】
俯臥撐、引體向上、深蹲等常見健身動作,AI都能準確計數(shù),幫你記錄每一次進步。
界面友好,操作簡單,讓健身更加科學高效。
?【自定義功能】
可以根據(jù)自己的需求,訓練或自定義動作,讓AI成為你的私人健身教練。
opencv-python
, mediapipe
(用于人體姿態(tài)估計), 和 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)# 定義一個函數(shù)來檢測仰臥起坐
def detect_sit_up(frame):image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)image.flags.writeable = Falseresults = pose.process(image)image.flags.writeable = Trueimage = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)if results.pose_landmarks:# 獲取關鍵點landmarks = results.pose_landmarks.landmarkhip = landmarks[mp_pose.PoseLandmark.LEFT_HIP].yknee = landmarks[mp_pose.PoseLandmark.LEFT_KNEE].yankle = landmarks[mp_pose.PoseLandmark.LEFT_ANKLE].y# 判斷是否完成一次仰臥起坐if hip < knee and hip < ankle:return Truereturn False# 定義一個函數(shù)來更新UI中的計數(shù)器
def update_counter(count):count_label.config(text=f"Count: {count}")# 主程序
def main():global rootcap = cv2.VideoCapture(0)sit_up_count = 0while True:ret, frame = cap.read()if not ret:break# 檢測仰臥起坐is_sit_up = detect_sit_up(frame)# 如果檢測到完成一次仰臥起坐,則增加計數(shù)if is_sit_up:sit_up_count += 1update_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_tkvideo_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()
此外,為了使代碼運行,你需要確保你的環(huán)境中安裝了所有必需的庫,并且攝像頭可以正常工作。