This engineering thesis presents a Python-based computer application acting as a virtual personal trainer. Its main purpose is to monitor user exercises and automatically count the number of repetitions performed.
The application allows users to create accounts and store training history in a database. Each user can add new exercises (counted manually) and build their own workout plans. Additionally, there is an option to customize various settings, such as the repetition counting mode or the volume level of voice prompts.
By combining motion recognition technology with a user-friendly interface, the program continuously analyzes body movements and facilitates efficient training. Users can exercise conveniently while the application ensures correct exercise performance and keeps all necessary data for tracking progress.
- Python
- OpenCV
- PyQt
- SQLite
- OpenCV
- ElevenLabs
- User registration and login with unique username and 4-digit PIN
- Add and remove custom exercises
- Create, edit, and delete custom workout plans
- View training history with calendar overview
- Application settings configuration (camera, volume, mode, user name, repetition/prep time, account deletion)
- Camera-based exercise tracking with automatic repetition counting
- Exercise correctness evaluation (for "Overhead Press" only)
- Manual and automatic exercise modes without camera tracking
After selecting the desired workout plan, the user starts the training session. If the plan includes exercises with motion tracking implemented, the application automatically counts correctly performed repetitions.
For exercises without this feature, the user must manually monitor their execution - optionally using automatic mode, which sets the exercise pace, or manual mode, where the user manually switches between exercises.
Once the workout is completed, it is saved to the history, allowing progress tracking over time.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Windows 10 or newer
- Python 3.8+ (Python 3.8 is recommended for compatibility)
- Webcam (built-in or external)
- Check if Python is installed by running:
python --version
- If not installed or version is lower than 3.8, download it from: https://www.python.org/downloads/
- Run the installer and make sure to check the option:
Add python.exe to PATH
- After installation, confirm it by running:
python --version
- Copy the project files to any folder on your computer.
- Open a terminal in that folder and install virtualenv:
pip install virtualenv
- Create a virtual environment:
virtualenv .venv
- Activate it:
.venv\Scripts\activate
- After finishing work, deactivate it with:
.venv\Scripts\deactivate
With the virtual environment activated, run: pip install -r requirements.txt
Method 1: Using Python
- Ensure
.venv
is activated. - Navigate to the folder with
main.py
. - Run:
python main.py
- The login window should appear.
Method 2: As a Standalone Executable (via PyInstaller)
- Note: The virtual environment must be named
.venv
– the build script uses hardcoded paths. - Make sure all dependencies are installed in
.venv
. - Open terminal in the folder containing
build.bat
. - Run:
build.bat
- After building, go to the dist/ folder – the compiled
.exe
will be inside.