Assicurati di avere una versione funzionante del framework MediaPipe. Consulta istruzioni di installazione.
Per eseguire l'esempio
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!
L'esempio
hello world
utilizza un semplice grafico MediaPipe nella FunzionePrintHelloWorld()
, definita in un protocolloCalculatorGraphConfig
.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" } )");
Puoi visualizzare questo grafico utilizzando Visualizzatore di MediaPipe incollando il i contenuti di CalculatorGraphConfig riportati di seguito nel visualizzatore. Consulta qui per ricevere assistenza sul visualizzatore.
input_stream: "in" output_stream: "out" node { calculator: "PassThroughCalculator" input_stream: "in" output_stream: "out1" } node { calculator: "PassThroughCalculator" input_stream: "out1" output_stream: "out" }
Questo grafico è composto da 1 stream di input del grafico (
in
) e 1 stream di output del grafico (out
) e 2PassThroughCalculator
connessi in serie.Prima di eseguire il grafico, un oggetto
OutputStreamPoller
è collegato al flusso di output per recuperare in seguito l'output del grafico e l'esecuzione del inizia conStartRun
.CalculatorGraph graph; MP_RETURN_IF_ERROR(graph.Initialize(config)); MP_ASSIGN_OR_RETURN(OutputStreamPoller poller, graph.AddOutputStreamPoller("out")); MP_RETURN_IF_ERROR(graph.StartRun({}));
L'esempio quindi crea 10 pacchetti (ogni pacchetto contiene una stringa "Hello") Mondo!" con valori Timestamp che vanno da 0, 1, ... 9) utilizzando
MakePacket
, aggiunge ciascun pacchetto nel grafico attraverso la funzionein
flusso di input e infine chiude il flusso di input per terminare l'esecuzione del grafico.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"));
Tramite l'oggetto
OutputStreamPoller
, l'esempio recupera quindi tutte e 10 pacchetti dal flusso di output, ottiene il contenuto di stringa da ogni e la stampa nel log di output.mediapipe::Packet packet; while (poller.Next(&packet)) { LOG(INFO) << packet.Get<string>(); }
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-09-05 UTC.