# MediaPipe subgraph that calculates hand ROI from palm detection. type: "PalmDetectionDetectionToRoi" # Palm detection. (Detection) input_stream: "DETECTION:detection" # Frame size. (std::pair) input_stream: "IMAGE_SIZE:image_size" # ROI (region of interest) according to landmarks, represented as normalized # rect. (NormalizedRect) output_stream: "ROI:roi" # Converts results of palm detection into a rectangle (normalized by image size) # that encloses the palm and is rotated such that the line connecting center of # the wrist and MCP of the middle finger is aligned with the Y-axis of the # rectangle. node { calculator: "DetectionsToRectsCalculator" input_stream: "DETECTION:detection" input_stream: "IMAGE_SIZE:image_size" output_stream: "NORM_RECT:raw_roi" options: { [mediapipe.DetectionsToRectsCalculatorOptions.ext] { rotation_vector_start_keypoint_index: 0 # Center of wrist. rotation_vector_end_keypoint_index: 2 # MCP of middle finger. rotation_vector_target_angle_degrees: 90 } } } # Expands and shifts the rectangle that contains the palm so that it's likely # to cover the entire hand. node { calculator: "RectTransformationCalculator" input_stream: "NORM_RECT:raw_roi" input_stream: "IMAGE_SIZE:image_size" output_stream: "roi" options: { [mediapipe.RectTransformationCalculatorOptions.ext] { scale_x: 2.6 scale_y: 2.6 shift_y: -0.5 square_long: true } } }