Program ini menggunakan MediaPipe dan Machine Learning untuk mendeteksi gerakan angkat beban berdasarkan sudut siku kanan dan kiri. Program menghitung jumlah pengangkatan beban secara terpisah untuk tangan kanan dan kiri, serta menampilkan total pengangkatan. Program berjalan secara real-time menggunakan webcam.
- Deteksi Gerakan Angkat Beban: Mendeteksi gerakan berdasarkan sudut siku kanan dan kiri.
- Perhitungan Terpisah: Menghitung jumlah pengangkatan untuk tangan kanan dan kiri secara independen.
- Total Pengangkatan: Menampilkan total jumlah pengangkatan dari kedua tangan.
- Real-Time Feedback: Menampilkan sudut siku kanan dan kiri serta status pengangkatan langsung di layar.
- Python 3.7 - 3.10
- Webcam
- Library Python:
opencv-pythonmediapipenumpyscikit-learn
- Clone Repository
git clone https://github.com/mochshultan/BicepCurl_Counter.git cd BicepCurl_Counter - Install Free Kaggle Data Set
Note: Adjust path on
import kagglehub path = kagglehub.dataset_download("trainingdatapro/pose-estimation")main.pydue to where you put your dataset - Install Dependencies
pip install -r requirements.txt
- Run Program
python main.py
- Pastikan webcam terhubung dan berfungsi.
- Berdiri di depan webcam dengan bahu, siku, dan pergelangan tangan terlihat jelas.
- Angkat beban dengan tangan kanan, kiri, atau keduanya. Program akan mendeteksi dan menghitung pengangkatan.
- Tekan tombol
rpada keyboard untuk reset value counter - Tekan tombol
qpada keyboard untuk keluar dari program.
- Sudut Siku: Ditampilkan secara real-time.
- Jumlah Pengangkatan: Untuk tangan kanan, kiri, dan total.
- Status: "lifting" atau "not lifting" berdasarkan gerakan.
- Sudut Siku: Jika sudut < threshold, dianggap sebagai angkat beban (using 55°).
- Decision Tree: Model dilatih dengan memasukkan data training berupa pasangan sudut siku (contoh: sudut siku kanan dan kiri) serta label yang merepresentasikan suatu kondisi (misalnya, aksi angkat beban atau tidak). Decision Tree mempelajari threshold atau batas nilai sudut yang memisahkan antara kondisi tersebut dengan membangun struktur pohon "if‑then". Saat proses pelatihan (dengan metode fit), algoritma mencari aturan terbaik untuk membagi data sehingga tiap cabang dari pohon menghasilkan prediksi yang tepat
main.py: File utama program.utils.py: Fungsicalculate_angleuntuk menghitung sudut siku dari koordinat landmark.body-plot: Berisi hasil download dataset from kaggle.com or trainingdata.pro
- Pengembangan: Tambahkan lebih banyak data pelatihan untuk meningkatkan akurasi atau gunakan model lebih kompleks seperti TensorFlow.
- Testing: Uji dengan berbagai posisi tubuh dan sudut kamera.
- Deteksi apakah pengguna benar-benar memegang beban.
- Hitung estimasi kalori yang terbakar.
- Simpan data pengangkatan ke file/database.
- Tambahkan antarmuka GUI.
- Program tidak mendeteksi gerakan?
- Pastikan bahu, siku, dan pergelangan tangan terlihat jelas oleh kamera.
- Pastikan pencahayaan cukup.
- Bagaimana meningkatkan akurasi deteksi?
- Tambahkan data pelatihan pada model decision tree.
- Gunakan kamera resolusi tinggi.
- Apakah bisa digunakan tanpa beban?
- Ya, deteksi dilakukan pada berdasarkan sudut siku, bukan keberadaan beban (sistem sederhana).
Program ini dilisensikan di bawah MIT License. Bebas digunakan, dimodifikasi, dan didistribusikan dengan atribusi kepada pembuat.