Убедитесь, что у вас установлена рабочая версия MediaPipe Framework. См. инструкции по установке .
Чтобы запустить пример
hello world
:$ git clone https://github.com/google/mediapipe.git $ cd mediapipe $ export GLOG_logtostderr=1 # Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' as desktop GPU is not supported currently. $ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/hello_world:hello_world # It should print 10 rows of Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
В примере
hello world
используется простой граф MediaPipe в функцииPrintHelloWorld()
, определенной в прототипеCalculatorGraphConfig
.absl::Status PrintHelloWorld() { // Configures a simple graph, which concatenates 2 PassThroughCalculators. CalculatorGraphConfig config = ParseTextProtoOrDie<CalculatorGraphConfig>(R"( input_stream: "in" output_stream: "out" node { calculator: "PassThroughCalculator" input_stream: "in" output_stream: "out1" } node { calculator: "PassThroughCalculator" input_stream: "out1" output_stream: "out" } )");
Вы можете визуализировать этот график с помощью MediaPipe Visualizer , вставив содержимое CalculatorGraphConfig ниже в визуализатор. См. здесь справку по визуализатору.
input_stream: "in" output_stream: "out" node { calculator: "PassThroughCalculator" input_stream: "in" output_stream: "out1" } node { calculator: "PassThroughCalculator" input_stream: "out1" output_stream: "out" }
Этот граф состоит из 1 входного потока графа (
in
) и 1 выходного потока графа (out
), а также двух последовательно соединенныхPassThroughCalculator
.Перед запуском графа объект
OutputStreamPoller
подключается к выходному потоку, чтобы позже получить выходные данные графа, а запуск графа запускается с помощьюStartRun
.CalculatorGraph graph; MP_RETURN_IF_ERROR(graph.Initialize(config)); MP_ASSIGN_OR_RETURN(OutputStreamPoller poller, graph.AddOutputStreamPoller("out")); MP_RETURN_IF_ERROR(graph.StartRun({}));
Затем в примере создаются 10 пакетов (каждый пакет содержит строку «Hello World!» со значениями отметки времени в диапазоне от 0, 1,... 9) с использованием функции
MakePacket
, добавляется каждый пакет в граф черезin
поток и, наконец, закрывает входной поток, чтобы завершить выполнение графа.for (int i = 0; i < 10; ++i) { MP_RETURN_IF_ERROR(graph.AddPacketToInputStream("in", MakePacket<std::string>("Hello World!").At(Timestamp(i)))); } MP_RETURN_IF_ERROR(graph.CloseInputStream("in"));
Затем с помощью объекта
OutputStreamPoller
пример извлекает все 10 пакетов из выходного потока, извлекает строковое содержимое из каждого пакета и печатает его в выходной журнал.mediapipe::Packet packet; while (poller.Next(&packet)) { LOG(INFO) << packet.Get<string>(); }
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2024-11-12 UTC.