Assicurati di avere una versione funzionante di MediaPipe Framework. Consulta le 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 MediaPipe Visualizer incollando i contenuti CalculatorGraphConfig di seguito nel visualizzatore. Consulta questa pagina 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 un flusso di input del grafico (
in
), un flusso di output del grafico (out
) e duePassThroughCalculator
collegati in serie.Prima di eseguire il grafico, un oggetto
OutputStreamPoller
viene collegato al flusso di output per recuperare l'output del grafico in un secondo momento, mentre l'esecuzione del grafico viene avviata 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 crea quindi 10 pacchetti (ogni pacchetto contiene una stringa "Hello World!" con valori di timestamp compresi tra 0, 1 e ... 9) utilizzando la funzione
MakePacket
, aggiunge ciascun pacchetto nel grafico tramite il flusso di inputin
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 tutti e 10 i pacchetti dal flusso di output, recupera il contenuto della stringa da ciascun pacchetto e lo 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-05-14 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Mancano le informazioni di cui ho bisogno"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Troppo complicato/troppi passaggi"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Obsoleti"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema di traduzione"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema relativo a esempi/codice"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Altra"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Facile da capire"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Il problema è stato risolto"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Altra"
}]