Приложение для анализа поз человека в реальном времени с использованием библиотеки MediaPipe.
Это кроссплатформенное приложение на Python, которое отслеживает ключевые точки скелета человека с помощью веб-камеры и предоставляет удобный интерфейс для анализа, визуализации и экспорта данных.
- 🖥️ Работает на весь экран
- 🌓 Поддержка темной/светлой темы
- 🌍 Двуязычный интерфейс: русский / английский
- 📸 Автоматический запуск камеры при старте
- 💾 Экспорт данных в форматах CSV и JSON
- 📈 Встроенный график активности (движения ключевых точек во времени)
- 🌐 Встроенный Flask API с эндпоинтом
/statusдля мониторинга состояния приложения - 🔒 Защита от двойного запуска (только один экземпляр приложения)
- 📝 Подробное логирование ошибок и событий
- 📦 Готов к сборке в автономный
.exe(через PyInstaller и т.п.)
Убедитесь, что у вас установлен Python 3.10 или новее.
Проверить версию:
python --versionpip install opencv-python mediapipe numpy pillow flask psutil💡 Совет: рекомендуется использовать виртуальное окружение:
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows pip install -r requirements.txt
python main.pyПриложение автоматически:
- откроет окно в полноэкранном режиме,
- включит камеру,
- начнёт отслеживать позу.
mediapipe-skeleton-tracker/
├── main.py # Основной скрипт
├── app/ # Модули приложения (логика, UI, экспорт и т.д.)
├── logs/ # Логи ошибок и событий
├── exports/ # Экспортированные CSV/JSON файлы
├── static/ # Статические файлы для Flask API
├── templates/ # HTML-шаблоны (если используется веб-интерфейс)
├── requirements.txt # Зависимости
└── README.md
Во время работы приложения вы можете:
- Нажать кнопку «Экспорт» → выбрать формат (CSV или JSON)
- Файлы сохраняются в папку
exports/с временной меткой
Пример структуры JSON:
{
"timestamp": "2024-06-15T14:30:00",
"landmarks": [
{"x": 0.5, "y": 0.3, "z": 0.1, "visibility": 0.99},
...
]
}Приложение запускает локальный сервер Flask на http://localhost:5000.
Доступные эндпоинты:
GET /status— возвращает статус приложения:{ "status": "running", "camera_active": true, "fps": 28.5, "language": "ru" }
⚠️ API работает в фоне и не блокирует основной GUI.
Проект совместим со сборкой через PyInstaller:
pip install pyinstaller
pyinstaller --onefile --windowed --add-data "exports;exports" --add-data "logs;logs" main.pyУбедитесь, что все ресурсы (иконки, переводы и т.д.) включены в сборку.
Все ошибки и события записываются в файл logs/app.log.
Формат лога:
[2024-06-15 14:30:05] INFO: Camera started successfully
[2024-06-15 14:31:22] ERROR: Failed to detect pose — no person in frame
Интерфейс поддерживает два языка:
- Русский (
ru) - Английский (
en) Язык определяется автоматически по системным настройкам или может быть выбран вручную в настройках.
MIT License — свободно используйте, модифицируйте и распространяйте!