Asegúrate de tener una versión funcional del marco de trabajo de MediaPipe. Consulta instrucciones de instalación.
Para ejecutar el ejemplo de
hello world
, haz lo siguiente:$ 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!
El ejemplo de
hello world
usa un gráfico MediaPipe simple en el FunciónPrintHelloWorld()
, definida en 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" } )");
Puedes visualizar este gráfico usando MediaPipe Visualizer pegando CalculatorGraphConfig a continuación en el visualizador. Consulta aquí para obtener ayuda sobre el visualizador.
input_stream: "in" output_stream: "out" node { calculator: "PassThroughCalculator" input_stream: "in" output_stream: "out1" } node { calculator: "PassThroughCalculator" input_stream: "out1" output_stream: "out" }
Este gráfico consta de 1 flujo de entrada del gráfico (
in
) y 1 flujo de salida del grafo (out
) y 2PassThroughCalculator
conectados en serie.Antes de ejecutar el grafo, se conecta un objeto
OutputStreamPoller
al de salida para recuperar el resultado del grafo y, luego, ejecutar un modelo se inicia 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({}));
En el ejemplo, se crean 10 paquetes (cada paquete contiene la cadena “Hello ¡Mundial!" con valores de marca de tiempo que varían de 0, 1, ... 9) con el Función
MakePacket
, agrega cada paquete al gráfico a través dein
y, por último, cierra el flujo de entrada para finalizar la ejecución del grafo.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"));
A través del objeto
OutputStreamPoller
, el ejemplo recupera los 10. paquetes de la transmisión de salida, obtiene el contenido de cadena de cada paquete y lo imprime en el registro de salida.mediapipe::Packet packet; while (poller.Next(&packet)) { LOG(INFO) << packet.Get<string>(); }
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-08-20 (UTC)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Falta la información que necesito"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Muy complicado o demasiados pasos"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Desactualizado"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema de traducción"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema con las muestras o los códigos"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Otro"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Fácil de comprender"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Resolvió mi problema"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Otro"
}]
{
"lastModified": "Última actualización: 2024-08-20 (UTC)",
"confidential": False
}