Убедитесь, что у вас установлена рабочая версия 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), а также 2PassThroughCalculator, соединенных последовательно.
Перед запуском графа объект
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>(); }
Привет, мир! на C++
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-25 UTC.