kinemotion 0.15.1__tar.gz → 0.15.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of kinemotion might be problematic. Click here for more details.
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -1
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.github/pull_request_template.md +2 -1
- {kinemotion-0.15.1 → kinemotion-0.15.3}/CHANGELOG.md +21 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/CLAUDE.md +10 -10
- {kinemotion-0.15.1 → kinemotion-0.15.3}/CONTRIBUTING.md +2 -2
- {kinemotion-0.15.1 → kinemotion-0.15.3}/PKG-INFO +9 -10
- {kinemotion-0.15.1 → kinemotion-0.15.3}/README.md +8 -9
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/README.md +2 -1
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/api/cmj.md +3 -2
- kinemotion-0.15.3/docs/api/dropjump.md +106 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/api/overview.md +22 -18
- kinemotion-0.15.3/docs/development/wallball-norep-detection.md +2412 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/guides/bulk-processing.md +12 -37
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/guides/camera-setup.md +4 -4
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/index.md +2 -2
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/reference/parameters.md +45 -93
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/technical/framerate.md +17 -25
- {kinemotion-0.15.1 → kinemotion-0.15.3}/pyproject.toml +1 -1
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/dropjump/cli.py +16 -10
- kinemotion-0.15.3/tests/test_cli_imports.py +57 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/uv.lock +1 -1
- kinemotion-0.15.1/docs/api/dropjump.md +0 -81
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.dockerignore +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.github/workflows/docs.yml +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.github/workflows/release.yml +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.gitignore +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.pre-commit-config.yaml +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.readthedocs.yml +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/.tool-versions +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/CODE_OF_CONDUCT.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/Dockerfile +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/GEMINI.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/LICENSE +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/SECURITY.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/api/core.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/development/errors-findings.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/development/validation-plan.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/guides/cmj-guide.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/reference/pose-systems.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/research/sports-biomechanics-pose-estimation.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/technical/imu-metadata.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/technical/real-time-analysis.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/technical/triple-extension.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/docs/translations/es/camera-setup.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/examples/bulk/README.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/examples/bulk/bulk_processing.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/examples/bulk/simple_example.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/examples/programmatic_usage.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/mkdocs.yml +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/requirements-docs.txt +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/samples/cmjs/README.md +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/__init__.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/api.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/cli.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/cmj/__init__.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/cmj/analysis.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/cmj/cli.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/cmj/debug_overlay.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/cmj/joint_angles.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/cmj/kinematics.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/core/__init__.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/core/auto_tuning.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/core/cli_utils.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/core/debug_overlay_utils.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/core/filtering.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/core/pose.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/core/smoothing.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/core/video_io.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/dropjump/__init__.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/dropjump/analysis.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/dropjump/debug_overlay.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/dropjump/kinematics.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/src/kinemotion/py.typed +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/__init__.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/test_adaptive_threshold.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/test_api.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/test_aspect_ratio.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/test_cmj_analysis.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/test_cmj_kinematics.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/test_com_estimation.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/test_contact_detection.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/test_filtering.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/test_kinematics.py +0 -0
- {kinemotion-0.15.1 → kinemotion-0.15.3}/tests/test_polyorder.py +0 -0
|
@@ -53,7 +53,7 @@ body:
|
|
|
53
53
|
label: Command Used
|
|
54
54
|
description: The exact command you ran (please remove any sensitive paths if needed).
|
|
55
55
|
placeholder: |
|
|
56
|
-
kinemotion dropjump-analyze video.mp4 --
|
|
56
|
+
kinemotion dropjump-analyze video.mp4 --output debug.mp4
|
|
57
57
|
render: bash
|
|
58
58
|
validations:
|
|
59
59
|
required: false
|
|
@@ -52,7 +52,8 @@ Related to #
|
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
54
|
# Example test commands
|
|
55
|
-
uv run kinemotion dropjump-analyze test_video.mp4
|
|
55
|
+
uv run kinemotion dropjump-analyze test_video.mp4
|
|
56
|
+
uv run kinemotion cmj-analyze test_video.mp4
|
|
56
57
|
```
|
|
57
58
|
|
|
58
59
|
## Code Quality Checklist
|
|
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
<!-- version list -->
|
|
9
9
|
|
|
10
|
+
## v0.15.3 (2025-11-10)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- **dropjump**: Correct API imports in CLI module
|
|
15
|
+
([`b456d4c`](https://github.com/feniix/kinemotion/commit/b456d4c0a09234df70da3d67de0ed53c4fe55cfe))
|
|
16
|
+
|
|
17
|
+
### Documentation
|
|
18
|
+
|
|
19
|
+
- **development**: Add HYROX wall ball no-rep detection implementation plan
|
|
20
|
+
([`f38f5ae`](https://github.com/feniix/kinemotion/commit/f38f5ae21b2cb767fdf0156f193ce988d58fee7f))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## v0.15.2 (2025-11-07)
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
- **docs**: Update documentation to match current auto-tuning API
|
|
28
|
+
([`a07b40d`](https://github.com/feniix/kinemotion/commit/a07b40d9057438912a44fc4eb5b9b3e6e34a6d56))
|
|
29
|
+
|
|
30
|
+
|
|
10
31
|
## v0.15.1 (2025-11-06)
|
|
11
32
|
|
|
12
33
|
### Bug Fixes
|
|
@@ -13,13 +13,13 @@ Kinemotion: Video-based kinematic analysis for athletic performance using MediaP
|
|
|
13
13
|
```bash
|
|
14
14
|
asdf install # Install Python 3.12.7 + uv
|
|
15
15
|
uv sync # Install dependencies
|
|
16
|
-
uv run kinemotion dropjump-analyze video.mp4
|
|
16
|
+
uv run kinemotion dropjump-analyze video.mp4
|
|
17
17
|
uv run kinemotion cmj-analyze video.mp4
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
**Development:**
|
|
21
21
|
```bash
|
|
22
|
-
uv run pytest # Run all
|
|
22
|
+
uv run pytest # Run all 75 tests
|
|
23
23
|
uv run ruff check --fix && uv run pyright # Lint + type check
|
|
24
24
|
```
|
|
25
25
|
|
|
@@ -35,7 +35,7 @@ src/kinemotion/
|
|
|
35
35
|
├── dropjump/ # Drop jump: cli, analysis, kinematics, debug_overlay
|
|
36
36
|
└── cmj/ # CMJ: cli, analysis, kinematics, joint_angles, debug_overlay
|
|
37
37
|
|
|
38
|
-
tests/ #
|
|
38
|
+
tests/ # 75 tests total (61 drop jump, 9 CMJ, 5 CLI import)
|
|
39
39
|
docs/ # CMJ_GUIDE, TRIPLE_EXTENSION, REAL_TIME_ANALYSIS, etc.
|
|
40
40
|
```
|
|
41
41
|
|
|
@@ -48,7 +48,7 @@ docs/ # CMJ_GUIDE, TRIPLE_EXTENSION, REAL_TIME_ANALYSIS, e
|
|
|
48
48
|
| Starting | Elevated box | Floor level |
|
|
49
49
|
| Algorithm | Forward search | Backward search from peak |
|
|
50
50
|
| Velocity | Absolute (magnitude) | Signed (direction matters) |
|
|
51
|
-
|
|
|
51
|
+
| Parameters | Auto-tuned quality presets | Auto-tuned quality presets |
|
|
52
52
|
| Key Metric | Ground contact time | Jump height from flight time |
|
|
53
53
|
|
|
54
54
|
## Critical Implementation Details
|
|
@@ -178,13 +178,13 @@ When writing new code, follow these principles to maintain low duplication:
|
|
|
178
178
|
### CLI
|
|
179
179
|
|
|
180
180
|
```bash
|
|
181
|
-
# Drop jump (
|
|
182
|
-
kinemotion dropjump-analyze video.mp4
|
|
181
|
+
# Drop jump (auto-tuned parameters)
|
|
182
|
+
kinemotion dropjump-analyze video.mp4
|
|
183
183
|
|
|
184
|
-
# CMJ
|
|
184
|
+
# CMJ with debug video
|
|
185
185
|
kinemotion cmj-analyze video.mp4 --output debug.mp4
|
|
186
186
|
|
|
187
|
-
# Batch
|
|
187
|
+
# Batch processing
|
|
188
188
|
kinemotion cmj-analyze videos/*.mp4 --batch --workers 4
|
|
189
189
|
```
|
|
190
190
|
|
|
@@ -193,11 +193,11 @@ kinemotion cmj-analyze videos/*.mp4 --batch --workers 4
|
|
|
193
193
|
```python
|
|
194
194
|
# Drop jump
|
|
195
195
|
from kinemotion import process_dropjump_video
|
|
196
|
-
metrics =
|
|
196
|
+
metrics = process_dropjump_video("video.mp4", quality="balanced")
|
|
197
197
|
|
|
198
198
|
# CMJ
|
|
199
199
|
from kinemotion import process_cmj_video
|
|
200
|
-
metrics = process_cmj_video("video.mp4")
|
|
200
|
+
metrics = process_cmj_video("video.mp4", quality="balanced")
|
|
201
201
|
```
|
|
202
202
|
|
|
203
203
|
## Important Gotchas
|
|
@@ -83,10 +83,10 @@ We actively welcome pull requests! Here's how to submit one:
|
|
|
83
83
|
|
|
84
84
|
```bash
|
|
85
85
|
# Run from source
|
|
86
|
-
uv run kinemotion dropjump-analyze <video_path>
|
|
86
|
+
uv run kinemotion dropjump-analyze <video_path>
|
|
87
87
|
|
|
88
88
|
# With debug output
|
|
89
|
-
uv run kinemotion dropjump-analyze <video_path> --
|
|
89
|
+
uv run kinemotion dropjump-analyze <video_path> --output debug.mp4 --verbose
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
## Code Quality Standards
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kinemotion
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.3
|
|
4
4
|
Summary: Video-based kinematic analysis for athletic performance
|
|
5
5
|
Project-URL: Homepage, https://github.com/feniix/kinemotion
|
|
6
6
|
Project-URL: Repository, https://github.com/feniix/kinemotion
|
|
@@ -125,8 +125,8 @@ Kinemotion supports two jump types with intelligent auto-tuning that automatical
|
|
|
125
125
|
Analyzes reactive strength and ground contact time:
|
|
126
126
|
|
|
127
127
|
```bash
|
|
128
|
-
#
|
|
129
|
-
kinemotion dropjump-analyze video.mp4
|
|
128
|
+
# Automatic parameter tuning based on video characteristics
|
|
129
|
+
kinemotion dropjump-analyze video.mp4
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
### Counter Movement Jump (CMJ) Analysis
|
|
@@ -176,9 +176,9 @@ Process multiple videos in parallel:
|
|
|
176
176
|
|
|
177
177
|
```bash
|
|
178
178
|
# Drop jumps
|
|
179
|
-
kinemotion dropjump-analyze videos/*.mp4 --batch --
|
|
179
|
+
kinemotion dropjump-analyze videos/*.mp4 --batch --workers 4
|
|
180
180
|
|
|
181
|
-
# CMJ
|
|
181
|
+
# CMJ with output directories
|
|
182
182
|
kinemotion cmj-analyze videos/*.mp4 --batch --workers 4 \
|
|
183
183
|
--json-output-dir results/ \
|
|
184
184
|
--csv-summary summary.csv
|
|
@@ -194,9 +194,8 @@ Use kinemotion as a library for automated pipelines and custom analysis.
|
|
|
194
194
|
from kinemotion import process_dropjump_video
|
|
195
195
|
|
|
196
196
|
# Process a single video
|
|
197
|
-
metrics =
|
|
197
|
+
metrics = process_dropjump_video(
|
|
198
198
|
video_path="athlete_jump.mp4",
|
|
199
|
-
drop_height=0.40, # 40cm drop box
|
|
200
199
|
quality="balanced",
|
|
201
200
|
verbose=True
|
|
202
201
|
)
|
|
@@ -214,11 +213,11 @@ print(f"Flight time: {metrics.flight_time * 1000:.1f} ms")
|
|
|
214
213
|
from kinemotion import DropJumpVideoConfig, process_dropjump_videos_bulk
|
|
215
214
|
|
|
216
215
|
configs = [
|
|
217
|
-
|
|
218
|
-
|
|
216
|
+
DropJumpVideoConfig("video1.mp4", quality="balanced"),
|
|
217
|
+
DropJumpVideoConfig("video2.mp4", quality="accurate"),
|
|
219
218
|
]
|
|
220
219
|
|
|
221
|
-
results =
|
|
220
|
+
results = process_dropjump_videos_bulk(configs, max_workers=4)
|
|
222
221
|
|
|
223
222
|
# CMJ bulk processing
|
|
224
223
|
from kinemotion import CMJVideoConfig, process_cmj_videos_bulk
|
|
@@ -96,8 +96,8 @@ Kinemotion supports two jump types with intelligent auto-tuning that automatical
|
|
|
96
96
|
Analyzes reactive strength and ground contact time:
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
|
-
#
|
|
100
|
-
kinemotion dropjump-analyze video.mp4
|
|
99
|
+
# Automatic parameter tuning based on video characteristics
|
|
100
|
+
kinemotion dropjump-analyze video.mp4
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
### Counter Movement Jump (CMJ) Analysis
|
|
@@ -147,9 +147,9 @@ Process multiple videos in parallel:
|
|
|
147
147
|
|
|
148
148
|
```bash
|
|
149
149
|
# Drop jumps
|
|
150
|
-
kinemotion dropjump-analyze videos/*.mp4 --batch --
|
|
150
|
+
kinemotion dropjump-analyze videos/*.mp4 --batch --workers 4
|
|
151
151
|
|
|
152
|
-
# CMJ
|
|
152
|
+
# CMJ with output directories
|
|
153
153
|
kinemotion cmj-analyze videos/*.mp4 --batch --workers 4 \
|
|
154
154
|
--json-output-dir results/ \
|
|
155
155
|
--csv-summary summary.csv
|
|
@@ -165,9 +165,8 @@ Use kinemotion as a library for automated pipelines and custom analysis.
|
|
|
165
165
|
from kinemotion import process_dropjump_video
|
|
166
166
|
|
|
167
167
|
# Process a single video
|
|
168
|
-
metrics =
|
|
168
|
+
metrics = process_dropjump_video(
|
|
169
169
|
video_path="athlete_jump.mp4",
|
|
170
|
-
drop_height=0.40, # 40cm drop box
|
|
171
170
|
quality="balanced",
|
|
172
171
|
verbose=True
|
|
173
172
|
)
|
|
@@ -185,11 +184,11 @@ print(f"Flight time: {metrics.flight_time * 1000:.1f} ms")
|
|
|
185
184
|
from kinemotion import DropJumpVideoConfig, process_dropjump_videos_bulk
|
|
186
185
|
|
|
187
186
|
configs = [
|
|
188
|
-
|
|
189
|
-
|
|
187
|
+
DropJumpVideoConfig("video1.mp4", quality="balanced"),
|
|
188
|
+
DropJumpVideoConfig("video2.mp4", quality="accurate"),
|
|
190
189
|
]
|
|
191
190
|
|
|
192
|
-
results =
|
|
191
|
+
results = process_dropjump_videos_bulk(configs, max_workers=4)
|
|
193
192
|
|
|
194
193
|
# CMJ bulk processing
|
|
195
194
|
from kinemotion import CMJVideoConfig, process_cmj_videos_bulk
|
|
@@ -41,6 +41,7 @@ Welcome to the kinemotion documentation. This directory contains guides, technic
|
|
|
41
41
|
|
|
42
42
|
- **[Validation Plan](development/validation-plan.md)** - Testing and validation strategy
|
|
43
43
|
- **[Errors & Findings](development/errors-findings.md)** - Known issues and debugging information
|
|
44
|
+
- **[Wall Ball No-Rep Detection](development/wallball-norep-detection.md)** - Future feature implementation plan for HYROX wall ball analysis
|
|
44
45
|
|
|
45
46
|
### 🌍 Translations
|
|
46
47
|
|
|
@@ -100,4 +101,4 @@ Ensure cross-references use relative paths and follow conventional commits forma
|
|
|
100
101
|
|
|
101
102
|
______________________________________________________________________
|
|
102
103
|
|
|
103
|
-
**Last Updated:** November
|
|
104
|
+
**Last Updated:** November 7, 2025
|
|
@@ -9,8 +9,9 @@ from kinemotion import process_cmj_video
|
|
|
9
9
|
|
|
10
10
|
metrics = process_cmj_video(
|
|
11
11
|
video_path="cmj.mp4",
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
quality="balanced", # fast, balanced, or accurate
|
|
13
|
+
output_video="debug.mp4", # optional
|
|
14
|
+
verbose=True
|
|
14
15
|
)
|
|
15
16
|
|
|
16
17
|
print(f"Jump height: {metrics.jump_height:.2f}m")
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Drop Jump API
|
|
2
|
+
|
|
3
|
+
The drop jump API provides functions for analyzing drop jump videos and extracting kinematic metrics.
|
|
4
|
+
|
|
5
|
+
## Quick Example
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
from kinemotion import process_dropjump_video
|
|
9
|
+
|
|
10
|
+
metrics = process_dropjump_video(
|
|
11
|
+
video_path="dropjump.mp4",
|
|
12
|
+
quality="balanced", # fast, balanced, or accurate
|
|
13
|
+
output_video="debug.mp4", # optional
|
|
14
|
+
verbose=True
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
print(f"Ground contact time: {metrics.ground_contact_time:.3f}s")
|
|
18
|
+
print(f"Flight time: {metrics.flight_time:.3f}s")
|
|
19
|
+
print(f"RSI: {metrics.reactive_strength_index:.2f}")
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Main Functions
|
|
23
|
+
|
|
24
|
+
::: kinemotion.api.process_dropjump_video
|
|
25
|
+
options:
|
|
26
|
+
show_root_heading: true
|
|
27
|
+
show_source: false
|
|
28
|
+
|
|
29
|
+
::: kinemotion.api.process_dropjump_videos_bulk
|
|
30
|
+
options:
|
|
31
|
+
show_root_heading: true
|
|
32
|
+
show_source: false
|
|
33
|
+
|
|
34
|
+
## Configuration
|
|
35
|
+
|
|
36
|
+
::: kinemotion.api.DropJumpVideoConfig
|
|
37
|
+
options:
|
|
38
|
+
show_root_heading: true
|
|
39
|
+
show_source: false
|
|
40
|
+
|
|
41
|
+
## Results
|
|
42
|
+
|
|
43
|
+
::: kinemotion.api.DropJumpVideoResult
|
|
44
|
+
options:
|
|
45
|
+
show_root_heading: true
|
|
46
|
+
show_source: false
|
|
47
|
+
|
|
48
|
+
## Metrics
|
|
49
|
+
|
|
50
|
+
::: kinemotion.dropjump.kinematics.DropJumpMetrics
|
|
51
|
+
options:
|
|
52
|
+
show_root_heading: true
|
|
53
|
+
show_source: false
|
|
54
|
+
|
|
55
|
+
## Key Parameters
|
|
56
|
+
|
|
57
|
+
### quality
|
|
58
|
+
|
|
59
|
+
Analysis quality preset that determines processing speed and accuracy. The system automatically tunes parameters based on video characteristics and the selected preset.
|
|
60
|
+
|
|
61
|
+
Options:
|
|
62
|
+
|
|
63
|
+
- `"fast"` - Quick processing, lower precision
|
|
64
|
+
- `"balanced"` - Default, good for most cases
|
|
65
|
+
- `"accurate"` - Research-grade, slower processing
|
|
66
|
+
|
|
67
|
+
Default: `"balanced"`
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
metrics = process_dropjump_video("video.mp4", quality="accurate")
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### output_video
|
|
74
|
+
|
|
75
|
+
Path to write debug video with overlay visualization. If not provided, no debug video is created.
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
metrics = process_dropjump_video(
|
|
79
|
+
"video.mp4",
|
|
80
|
+
quality="balanced",
|
|
81
|
+
output_video="debug.mp4"
|
|
82
|
+
)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### json_output
|
|
86
|
+
|
|
87
|
+
Path to write JSON metrics output. If not provided, metrics are only returned as a Python object.
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
metrics = process_dropjump_video(
|
|
91
|
+
"video.mp4",
|
|
92
|
+
json_output="metrics.json"
|
|
93
|
+
)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Expert Parameters
|
|
97
|
+
|
|
98
|
+
For advanced users, you can override auto-tuned parameters:
|
|
99
|
+
|
|
100
|
+
- `smoothing_window` - Override auto-tuned smoothing window size
|
|
101
|
+
- `velocity_threshold` - Override velocity threshold for ground contact detection
|
|
102
|
+
- `min_contact_frames` - Override minimum contact frames
|
|
103
|
+
- `visibility_threshold` - Override visibility threshold
|
|
104
|
+
- `detection_confidence` - Override pose detection confidence
|
|
105
|
+
- `tracking_confidence` - Override pose tracking confidence
|
|
106
|
+
- `drop_start_frame` - Manually specify frame where drop begins
|
|
@@ -8,10 +8,10 @@ Kinemotion provides a Python API for video-based kinematic analysis. The API is
|
|
|
8
8
|
|
|
9
9
|
Process drop jump videos and extract kinematic metrics:
|
|
10
10
|
|
|
11
|
-
- `
|
|
12
|
-
- `
|
|
13
|
-
- `
|
|
14
|
-
- `
|
|
11
|
+
- `process_dropjump_video()` - Analyze a single drop jump video
|
|
12
|
+
- `process_dropjump_videos_bulk()` - Batch process multiple drop jump videos
|
|
13
|
+
- `DropJumpVideoConfig` - Configuration for drop jump analysis
|
|
14
|
+
- `DropJumpVideoResult` - Results from drop jump analysis
|
|
15
15
|
- `DropJumpMetrics` - Kinematic metrics for drop jumps
|
|
16
16
|
|
|
17
17
|
See [Drop Jump API](dropjump.md) for detailed documentation.
|
|
@@ -34,31 +34,35 @@ See [CMJ API](cmj.md) for detailed documentation.
|
|
|
34
34
|
from kinemotion import process_dropjump_video, process_cmj_video
|
|
35
35
|
|
|
36
36
|
# Drop jump analysis
|
|
37
|
-
drop_metrics =
|
|
37
|
+
drop_metrics = process_dropjump_video("dropjump.mp4", quality="balanced")
|
|
38
38
|
|
|
39
39
|
# CMJ analysis
|
|
40
|
-
cmj_metrics = process_cmj_video("cmj.mp4")
|
|
40
|
+
cmj_metrics = process_cmj_video("cmj.mp4", quality="balanced")
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
## Batch Processing
|
|
44
44
|
|
|
45
45
|
```python
|
|
46
|
-
from kinemotion import
|
|
46
|
+
from kinemotion import (
|
|
47
|
+
DropJumpVideoConfig,
|
|
48
|
+
CMJVideoConfig,
|
|
49
|
+
process_dropjump_videos_bulk,
|
|
50
|
+
process_cmj_videos_bulk
|
|
51
|
+
)
|
|
47
52
|
|
|
48
53
|
# Batch drop jump analysis
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
)
|
|
54
|
+
configs = [
|
|
55
|
+
DropJumpVideoConfig("video1.mp4", quality="balanced"),
|
|
56
|
+
DropJumpVideoConfig("video2.mp4", quality="accurate"),
|
|
57
|
+
]
|
|
58
|
+
results = process_dropjump_videos_bulk(configs, max_workers=4)
|
|
55
59
|
|
|
56
60
|
# Batch CMJ analysis
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
)
|
|
61
|
+
cmj_configs = [
|
|
62
|
+
CMJVideoConfig("cmj1.mp4", quality="balanced"),
|
|
63
|
+
CMJVideoConfig("cmj2.mp4", quality="accurate"),
|
|
64
|
+
]
|
|
65
|
+
cmj_results = process_cmj_videos_bulk(cmj_configs, max_workers=4)
|
|
62
66
|
```
|
|
63
67
|
|
|
64
68
|
## Core Utilities
|