Assurez-vous de disposer d'une version fonctionnelle de MediaPipe Framework. Voir instructions d'installation.
Pour exécuter l'exemple
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'exemple
hello world
utilise un graphique MediaPipe simple dans le FonctionPrintHelloWorld()
, définie dans un protoCalculatorGraphConfig
.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" } )");
Vous pouvez visualiser ce graphique à l'aide de MediaPipe Visualizer en collant les valeurs le contenu de CalculatorGraphConfig ci-dessous dans le visualiseur. Voir cliquez ici pour obtenir de l'aide concernant le visualiseur.
input_stream: "in" output_stream: "out" node { calculator: "PassThroughCalculator" input_stream: "in" output_stream: "out1" } node { calculator: "PassThroughCalculator" input_stream: "out1" output_stream: "out" }
Ce graphe comprend un flux d'entrée de graphe (
in
) et un flux de sortie de graphe (out
) et deux appareilsPassThroughCalculator
connectés en série.Avant d'exécuter le graphique, un objet
OutputStreamPoller
est connecté au du flux de sortie afin de récupérer ultérieurement le résultat du graphe, puis une exécution du graphe commence parStartRun
.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'exemple crée ensuite 10 paquets (chaque paquet contient la chaîne "Hello Monde !" avec des valeurs d'horodatage comprises entre 0, 1, ... 9) à l'aide de la propriété
MakePacket
, ajoute chaque paquet au graphique viain
flux d'entrée, puis ferme le flux d'entrée pour terminer l'exécution du graphe.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"));
Avec l'objet
OutputStreamPoller
, l'exemple récupère ensuite les 10 éléments des paquets du flux de sortie, obtient le contenu de la chaîne de chaque paquet et l'imprime dans le journal de sortie.mediapipe::Packet packet; while (poller.Next(&packet)) { LOG(INFO) << packet.Get<string>(); }
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/09/05 (UTC).