Assurez-vous de disposer d'une version fonctionnelle du framework MediaPipe. Consultez les instructions d'installation.
Pour exécuter l'exemple
hello world
, procédez comme suit:$ 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 la fonctionPrintHelloWorld()
, défini dans un fichier 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 du visualiseur MediaPipe en collant le contenu CalculatorGraphConfig ci-dessous dans le visualiseur. Cliquez ici pour obtenir de l'aide sur 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 se compose d'un flux d'entrée de graphe (
in
) et d'un flux de sortie de graphe (out
), et de deuxPassThroughCalculator
connectés en série.Avant d'exécuter le graphe, un objet
OutputStreamPoller
est connecté au flux de sortie afin de récupérer ultérieurement la sortie du graphe, et l'exécution du graphe est lancée avecStartRun
.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 (chacun contenant une chaîne "Hello World!" avec des valeurs d'horodatage allant de 0, 1, ... 9) à l'aide de la fonction
MakePacket
, ajoute chaque paquet dans le graphe via le flux d'entréein
, 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"));
Via l'objet
OutputStreamPoller
, l'exemple récupère ensuite les 10 paquets du flux de sortie, récupère 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/05/14 (UTC).
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Il n'y a pas l'information dont j'ai besoin"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Trop compliqué/Trop d'étapes"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Obsolète"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problème de traduction"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Mauvais exemple/Erreur de code"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Autre"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Facile à comprendre"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"J'ai pu résoudre mon problème"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Autre"
}]