|
| 1 | +import cv2 |
| 2 | +import numpy as np |
| 3 | +import time |
| 4 | +import PoseModule as pm |
| 5 | +cap = cv2.VideoCapture("AiTrainer/curls.mp4") |
| 6 | +detector = pm.poseDetector() |
| 7 | +count = 0 |
| 8 | +dir = 0 |
| 9 | +pTime = 0 |
| 10 | +while True: |
| 11 | + success, img = cap.read() |
| 12 | + img = cv2.resize(img, (1280, 720)) |
| 13 | + # img = cv2.imread("AiTrainer/test.jpg") |
| 14 | + img = detector.findPose(img, False) |
| 15 | + lmList = detector.findPosition(img, False) |
| 16 | + # print(lmList) |
| 17 | + if len(lmList) != 0: |
| 18 | + # Right Arm |
| 19 | + angle = detector.findAngle(img, 12, 14, 16) |
| 20 | + # # Left Arm |
| 21 | + #angle = detector.findAngle(img, 11, 13, 15,False) |
| 22 | + per = np.interp(angle, (210, 310), (0, 100)) |
| 23 | + bar = np.interp(angle, (220, 310), (650, 100)) |
| 24 | + # print(angle, per) |
| 25 | + # Check for the dumbbell curls |
| 26 | + color = (255, 0, 255) |
| 27 | + if per == 100: |
| 28 | + color = (0, 255, 0) |
| 29 | + if dir == 0: |
| 30 | + count += 0.5 |
| 31 | + dir = 1 |
| 32 | + if per == 0: |
| 33 | + color = (0, 255, 0) |
| 34 | + if dir == 1: |
| 35 | + count += 0.5 |
| 36 | + dir = 0 |
| 37 | + print(count) |
| 38 | + # Draw Bar |
| 39 | + cv2.rectangle(img, (1100, 100), (1175, 650), color, 3) |
| 40 | + cv2.rectangle(img, (1100, int(bar)), (1175, 650), color, cv2.FILLED) |
| 41 | + cv2.putText(img, f'{int(per)} %', (1100, 75), cv2.FONT_HERSHEY_PLAIN, 4, |
| 42 | + color, 4) |
| 43 | + # Draw Curl Count |
| 44 | + cv2.rectangle(img, (0, 450), (250, 720), (0, 255, 0), cv2.FILLED) |
| 45 | + cv2.putText(img, str(int(count)), (45, 670), cv2.FONT_HERSHEY_PLAIN, 15, |
| 46 | + (255, 0, 0), 25) |
| 47 | + cTime = time.time() |
| 48 | + fps = 1 / (cTime - pTime) |
| 49 | + pTime = cTime |
| 50 | + cv2.putText(img, str(int(fps)), (50, 100), cv2.FONT_HERSHEY_PLAIN, 5, |
| 51 | + (255, 0, 0), 5) |
| 52 | + cv2.imshow("Image", img) |
| 53 | + cv2.waitKey(1) |
0 commit comments