prev_time = [time.time() for i in range(len(cam_idx))] # Open3D visualization vis = o3d.visualization.Visualizer() vis.create_window(width=640, height=480) vis.get_render_option().point_size = 5.0 # Load triangulation class tri = Triangulation(cam_idx=cam_idx, vis=vis, use_panoptic_dataset=args.use_panoptic_dataset) # Load mediapipe and display class if mode=='hand': for i in range(len(cam_idx)): pipe[i] = MediaPipeHand(static_image_mode=False, max_num_hands=1) disp[i] = DisplayHand(draw3d=True, max_num_hands=1, vis=vis) elif mode=='body': for i in range(len(cam_idx)): pipe[i] = MediaPipeBody(static_image_mode=False, model_complexity=1) disp[i] = DisplayBody(draw3d=True, vis=vis) elif mode=='holistic': for i in range(len(cam_idx)): pipe[i] = MediaPipeHolistic(static_image_mode=False, model_complexity=1) disp[i] = DisplayHolistic(draw3d=True, vis=vis) else: print('Undefined mode only the following modes are available: \n hand / body / holistic') sys.exit() while True: # Loop through video capture for i, c in enumerate(cap):
import argparse from utils_display import DisplayHand from utils_mediapipe import MediaPipeHand from utils_joint_angle import GestureRecognition parser = argparse.ArgumentParser() parser.add_argument('-m', '--mode', default='eval', help='train / eval') args = parser.parse_args() mode = args.mode # Load mediapipe hand class pipe = MediaPipeHand(static_image_mode=False, max_num_hands=1) # Load display class disp = DisplayHand(max_num_hands=1) # Start video capture cap = cv2.VideoCapture(0) # By default webcam is index 0 # Load gesture recognition class gest = GestureRecognition(mode) counter = 0 while cap.isOpened(): ret, img = cap.read() if not ret: break # Flip image for 3rd person view img = cv2.flip(img, 1)
'fx': img_width * 0.9, # Approx 0.7w < f < w https://www.learnopencv.com/approximate-focal-length-for-webcams-and-cell-phone-cameras/ 'fy': img_width * 0.9, 'cx': img_width * 0.5, # Approx center of image 'cy': img_height * 0.5, 'width': img_width, 'height': img_height, } # Load mediapipe and display class if mode == 'hand': pipe = MediaPipeHand(static_image_mode=False, max_num_hands=2, intrin=intrin) disp = DisplayHand(draw3d=True, draw_camera=True, max_num_hands=2, intrin=intrin) elif mode == 'body': # Note: As of version 0.8.3 3D joint estimation is only available in full body mode pipe = MediaPipeBody(static_image_mode=False, model_complexity=1, intrin=intrin) disp = DisplayBody(draw3d=True, draw_camera=True, intrin=intrin) elif mode == 'holistic': # Note: As of version 0.8.3 3D joint estimation is only available in full body mode pipe = MediaPipeHolistic(static_image_mode=False, model_complexity=1, intrin=intrin) disp = DisplayHolistic(draw3d=True, draw_camera=True, intrin=intrin) # log = False
### Input : Live video of 2 hands playing rock paper scissor ### Output: 2D display of hand keypoint ### with gesture classification (rock=fist, paper=five, scissor=three/yeah) ############################################################################### import cv2 from utils_display import DisplayHand from utils_mediapipe import MediaPipeHand from utils_joint_angle import GestureRecognition # Load mediapipe hand class pipe = MediaPipeHand(static_image_mode=False, max_num_hands=2) # Load display class disp = DisplayHand(max_num_hands=2) # Start video capture cap = cv2.VideoCapture(0) # By default webcam is index 0 # Load gesture recognition class gest = GestureRecognition(mode='eval') counter = 0 while cap.isOpened(): ret, img = cap.read() if not ret: break # Flip image for 3rd person view img = cv2.flip(img, 1)
help='Select mode: face_detect / face / hand / body / holistic') args = parser.parse_args() mode = args.mode # Load mediapipe and display class if mode == 'face_detect': pipe = MediaPipeFaceDetect(model_selection=0, max_num_faces=5) disp = DisplayFaceDetect() elif mode == 'face': pipe = MediaPipeFace(static_image_mode=False, max_num_faces=1, refine_landmarks=True) disp = DisplayFace(draw3d=True, refine_landmarks=True) elif mode == 'hand': pipe = MediaPipeHand(static_image_mode=False, max_num_hands=2) disp = DisplayHand(draw3d=True, max_num_hands=2) elif mode == 'body': pipe = MediaPipeBody(static_image_mode=False, model_complexity=1) disp = DisplayBody(draw3d=True) elif mode == 'holistic': pipe = MediaPipeHolistic(static_image_mode=False, model_complexity=1, refine_face_landmarks=True) disp = DisplayHolistic(draw3d=True, refine_face_landmarks=True) else: print( 'Undefined mode only the following modes are available: \nface / hand / body / holistic' ) sys.exit() # Start video capture