# MediaPipe Objectron vertices/landmarks rendering CPU subgraph. type: "RendererSubgraph" input_stream: "IMAGE:input_image" input_stream: "MULTI_LANDMARKS:multi_landmarks" input_stream: "NORM_RECTS:multi_rect" output_stream: "IMAGE:output_image" # Outputs each element of multi_landmarks at a fake timestamp for the rest # of the graph to process. At the end of the loop, outputs the BATCH_END # timestamp for downstream calculators to inform them that all elements in the # vector have been processed. node { calculator: "BeginLoopNormalizedLandmarkListVectorCalculator" input_stream: "ITERABLE:multi_landmarks" output_stream: "ITEM:single_landmarks" output_stream: "BATCH_END:landmark_timestamp" } # Converts landmarks to drawing primitives for annotation overlay. node { calculator: "LandmarksToRenderDataCalculator" input_stream: "NORM_LANDMARKS:single_landmarks" output_stream: "RENDER_DATA:single_landmark_render_data" node_options: { [type.googleapis.com/mediapipe.LandmarksToRenderDataCalculatorOptions] { landmark_connections: [1, 2] # edge 1-2 landmark_connections: [1, 3] # edge 1-3 landmark_connections: [1, 5] # edge 1-5 landmark_connections: [2, 4] # edge 2-4 landmark_connections: [2, 6] # edge 2-6 landmark_connections: [3, 4] # edge 3-4 landmark_connections: [3, 7] # edge 3-7 landmark_connections: [4, 8] # edge 4-8 landmark_connections: [5, 6] # edge 5-6 landmark_connections: [5, 7] # edge 5-7 landmark_connections: [6, 8] # edge 6-8 landmark_connections: [7, 8] # edge 7-8 landmark_color { r: 255 g: 0 b: 0 } connection_color { r: 0 g: 255 b: 0 } thickness: 4.0 } } } node { calculator: "EndLoopRenderDataCalculator" input_stream: "ITEM:single_landmark_render_data" input_stream: "BATCH_END:landmark_timestamp" output_stream: "ITERABLE:multi_landmarks_render_data" } # Converts normalized rects to drawing primitives for annotation overlay. node { calculator: "RectToRenderDataCalculator" input_stream: "NORM_RECTS:multi_rect" output_stream: "RENDER_DATA:multi_rect_render_data" node_options: { [type.googleapis.com/mediapipe.RectToRenderDataCalculatorOptions] { filled: false color { r: 255 g: 0 b: 0 } thickness: 4.0 } } } # Draws annotations and overlays them on top of the input images. node { calculator: "AnnotationOverlayCalculator" input_stream: "IMAGE:input_image" input_stream: "VECTOR:multi_landmarks_render_data" input_stream: "multi_rect_render_data" output_stream: "IMAGE:output_image" }