mistpe commited on
Commit
36c6e96
·
verified ·
1 Parent(s): b544814

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -115
app.py DELETED
@@ -1,115 +0,0 @@
1
- from flask import Flask, render_template, request, jsonify, send_from_directory
2
- from flask_socketio import SocketIO
3
- from flask_cors import CORS
4
- import mediapipe as mp
5
- import cv2
6
- import numpy as np
7
- import time
8
- import os
9
- import json
10
-
11
- app = Flask(__name__)
12
- socketio = SocketIO(app)
13
- CORS(app)
14
-
15
- mp_pose = mp.solutions.pose
16
- pose = mp_pose.Pose(static_image_mode=False, min_detection_confidence=0.5, min_tracking_confidence=0.5)
17
-
18
- @app.route('/')
19
- def index():
20
- return render_template('index.html')
21
-
22
- @app.route('/web_app')
23
- def web_app():
24
- return render_template('holistic.html')
25
-
26
-
27
- @app.route('/video_app')
28
- def video_app():
29
- return render_template('video_app.html')
30
-
31
- def process_video(video_path):
32
- cap = cv2.VideoCapture(video_path)
33
- frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
34
- fps = int(cap.get(cv2.CAP_PROP_FPS))
35
-
36
- all_results = []
37
- previous_keypoints = None
38
- previous_velocities = None
39
- previous_time = 0
40
-
41
- for frame_number in range(frame_count):
42
- success, frame = cap.read()
43
- if not success:
44
- break
45
-
46
- frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
47
- results = pose.process(frame_rgb)
48
-
49
- if results.pose_landmarks:
50
- landmarks = results.pose_landmarks.landmark
51
- keypoints = [(lm.x, lm.y, lm.z) for lm in landmarks]
52
- current_time = frame_number / fps
53
- delta_time = current_time - previous_time
54
-
55
- velocities = []
56
- accelerations = []
57
-
58
- if previous_keypoints:
59
- for i, lm in enumerate(landmarks):
60
- dx = lm.x - previous_keypoints[i][0]
61
- dy = lm.y - previous_keypoints[i][1]
62
- dz = lm.z - previous_keypoints[i][2]
63
- speed = np.sqrt(dx ** 2 + dy ** 2 + dz ** 2) / delta_time if delta_time > 0 else 0
64
- velocities.append(speed)
65
- acceleration = (speed - previous_velocities[i]) / delta_time if previous_velocities and delta_time > 0 else 0
66
- accelerations.append(acceleration)
67
-
68
- all_results.append({
69
- 'frame': frame_number,
70
- 'landmarks': keypoints,
71
- 'velocities': velocities,
72
- 'accelerations': accelerations
73
- })
74
-
75
- previous_keypoints = keypoints
76
- previous_velocities = velocities
77
- previous_time = current_time
78
-
79
- cap.release()
80
- return all_results, fps
81
-
82
- @app.route('/upload_video', methods=['POST'])
83
- def upload_video():
84
- file = request.files.get('video')
85
- if file:
86
- upload_folder = os.path.join(app.root_path, 'static', 'uploads')
87
- if not os.path.exists(upload_folder):
88
- os.makedirs(upload_folder)
89
- video_path = os.path.join(upload_folder, 'temp_video.mp4')
90
- file.save(video_path)
91
-
92
- results, fps = process_video(video_path)
93
-
94
- results_path = os.path.join(upload_folder, 'results.json')
95
- with open(results_path, 'w') as f:
96
- json.dump({'results': results, 'fps': fps}, f)
97
-
98
- return jsonify(success=True, message='Video processed successfully')
99
- return jsonify(success=False, message='No video file received'), 400
100
-
101
- @app.route('/get_results')
102
- def get_results():
103
- results_path = os.path.join(app.root_path, 'static', 'uploads', 'results.json')
104
- if os.path.exists(results_path):
105
- with open(results_path, 'r') as f:
106
- return jsonify(json.load(f))
107
- return jsonify(success=False, message='Results not found'), 404
108
-
109
- @app.route('/uploads/<path:filename>')
110
- def serve_upload(filename):
111
- return send_from_directory(os.path.join(app.root_path, 'static', 'uploads'), filename)
112
-
113
- if __name__ == '__main__':
114
- os.makedirs(os.path.join(app.root_path, 'static', 'uploads'), exist_ok=True)
115
- socketio.run(app, host='0.0.0.0', port=7860, debug=True, allow_unsafe_werkzeug=True)