| import cv2 |
| import mediapipe as mp |
| import time |
|
|
| |
| capture = cv2.VideoCapture(0) |
| |
| previousTime = 0 |
| currentTime = 0 |
| mp_holistic = mp.solutions.holistic |
| holistic_model = mp_holistic.Holistic( |
| min_detection_confidence=0.5, |
| min_tracking_confidence=0.5 |
| ) |
|
|
| mp_drawing = mp.solutions.drawing_utils |
| |
| while capture.isOpened(): |
| ret, frame = capture.read() |
| |
| frame = cv2.resize(frame, (800, 600)) |
| image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) |
| image.flags.writeable = False |
|
|
|
|
| results = holistic_model.process(image) |
| image.flags.writeable = True |
| |
| image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) |
| |
| mp_drawing.draw_landmarks( |
| image, |
| results.face_landmarks, |
| mp_holistic.FACEMESH_CONTOURS, |
| mp_drawing.DrawingSpec( |
| color=(255,0,255), |
| thickness=1, |
| circle_radius=1 |
| ), |
| mp_drawing.DrawingSpec( |
| color=(0,255,255), |
| thickness=1, |
| circle_radius=1 |
| ) |
| ) |
| |
| mp_drawing.draw_landmarks( |
| image, |
| results.right_hand_landmarks, |
| mp_holistic.HAND_CONNECTIONS |
| ) |
| |
| mp_drawing.draw_landmarks( |
| image, |
| results.left_hand_landmarks, |
| mp_holistic.HAND_CONNECTIONS |
| ) |
| |
| currentTime = time.time() |
| fps = 1 / (currentTime-previousTime) |
| previousTime = currentTime |
| |
| cv2.putText(image, str(int(fps))+" FPS", (10, 70), cv2.FONT_HERSHEY_COMPLEX, 1, (0,255,0), 2) |
|
|
| cv2.imshow("Facial and Hand Landmarks", image) |
| if cv2.waitKey(5) & 0xFF == ord('q'): |
| break |
|
|
|
|
| capture.release() |
| cv2.destroyAllWindows() |
|
|