Redfire-1234's picture
Upload 4 files
052979d verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3D Trajectory Tracker</title>
<link rel="stylesheet" href="/static/styles.css">
</head>
<body>
<div class="container">
<header>
<h1>🎯 3D Trajectory Tracker</h1>
<p>Upload a video to track and visualize object movements in 3D</p>
</header>
<div class="upload-section">
<div class="upload-box" id="uploadBox">
<input type="file" id="videoInput" accept="video/*" hidden>
<div class="upload-content">
<svg width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
<polyline points="17 8 12 3 7 8"></polyline>
<line x1="12" y1="3" x2="12" y2="15"></line>
</svg>
<h3>Drop video here or click to upload</h3>
<p>Supports MP4, AVI, MOV, MKV</p>
</div>
</div>
<button id="uploadBtn" class="btn primary" style="display: none;">Process Video</button>
</div>
<div id="loadingSection" class="loading-section" style="display: none;">
<div class="spinner"></div>
<p>Processing video... This may take a few moments.</p>
</div>
<div id="resultsSection" class="results-section" style="display: none;">
<div class="stats-panel">
<h3>📊 Tracking Statistics</h3>
<div class="stats-grid">
<div class="stat-item">
<span class="stat-label">Objects Tracked:</span>
<span class="stat-value" id="statObjects">0</span>
</div>
<div class="stat-item">
<span class="stat-label">Total Frames:</span>
<span class="stat-value" id="statFrames">0</span>
</div>
<div class="stat-item">
<span class="stat-label">FPS:</span>
<span class="stat-value" id="statFPS">0</span>
</div>
<div class="stat-item">
<span class="stat-label">Duration:</span>
<span class="stat-value" id="statDuration">0s</span>
</div>
</div>
</div>
<div class="visualization-panel">
<h3>🎬 3D Trajectory Visualization</h3>
<div class="controls">
<button id="playBtn" class="btn">â–¶ Play</button>
<button id="resetBtn" class="btn">↻ Reset</button>
<label>
<input type="checkbox" id="showTrails" checked>
Show Trails
</label>
</div>
<div id="canvas3d"></div>
</div>
</div>
<footer>
<p>Built with FastAPI, Three.js, and OpenCV</p>
</footer>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script src="/static/visualizer.js"></script>
<script src="/static/app.js"></script>
</body>
</html>