48 lines
1.4 KiB
Plaintext
48 lines
1.4 KiB
Plaintext
|
# MediaPipe subgraph that calculates hand ROI from palm detection.
|
||
|
|
||
|
type: "PalmDetectionDetectionToRoi"
|
||
|
|
||
|
# Palm detection. (Detection)
|
||
|
input_stream: "DETECTION:detection"
|
||
|
# Frame size. (std::pair<int, int>)
|
||
|
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
|
||
|
}
|
||
|
}
|
||
|
}
|