chromium/third_party/mediapipe/src/mediapipe/framework/api2/stream/landmarks_to_tensor.h

#ifndef MEDIAPIPE_FRAMEWORK_API2_STREAM_LANDMARKS_TO_TENSOR_H_
#define MEDIAPIPE_FRAMEWORK_API2_STREAM_LANDMARKS_TO_TENSOR_H_

#include <utility>
#include <vector>

#include "absl/types/span.h"
#include "mediapipe/calculators/tensor/landmarks_to_tensor_calculator.pb.h"
#include "mediapipe/framework/api2/builder.h"
#include "mediapipe/framework/formats/landmark.pb.h"
#include "mediapipe/framework/formats/tensor.h"

namespace mediapipe::api2::builder {

// Updates @graph to convert @landmarks to a Tensor. Values and their order are
// defined by @attributes. If @flatten is true resulting tensor will be 1D,
// otherwise tensor will be 2D with (n_landmarks, n_attributes) shape.
Stream<std::vector<Tensor>> ConvertLandmarksToTensor(
    Stream<mediapipe::LandmarkList> landmarks,
    absl::Span<const mediapipe::LandmarksToTensorCalculatorOptions::Attribute>
        attributes,
    bool flatten, Graph& graph);

// Updates @graph to convert @normalized_landmarks to a Tensor. Values and their
// order are defined by @attributes. X, Y and Z values are scaled using
// @image_size. If @flatten is true resulting tensor will be 1D, otherwise
// tensor will be 2D with (n_landmarks, n_attributes) shape.
Stream<std::vector<Tensor>> ConvertNormalizedLandmarksToTensor(
    Stream<mediapipe::NormalizedLandmarkList> normalized_landmarks,
    Stream<std::pair<int, int>> image_size,
    absl::Span<const mediapipe::LandmarksToTensorCalculatorOptions::Attribute>
        attributes,
    bool flatten, Graph& graph);

}  // namespace mediapipe::api2::builder

#endif  // MEDIAPIPE_FRAMEWORK_API2_STREAM_LANDMARKS_TO_TENSOR_H_