Asegúrate de tener una versión funcional del framework de MediaPipe. Consulta las 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!
En el ejemplo de
hello world
, se usa un gráfico de MediaPipe simple en la 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 con MediaPipe Visualizer. Para ello, pega el contenido de CalculatorGraphConfig que aparece 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 de gráfico (
in
) y 1 flujo de salida de gráfico (out
), y 2PassThroughCalculator
conectadas en serie.Antes de ejecutar el grafo, se conecta un objeto
OutputStreamPoller
al flujo de salida para recuperar más tarde el resultado del grafo y se inicia la ejecución del grafo 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({}));
Luego, en el ejemplo, se crean 10 paquetes (cada paquete contiene una string “Hello World!” con valores de marca de tiempo que van de 0, 1, ... 9) con la función
MakePacket
, se agrega cada paquete al gráfico a través del flujo de entradain
y, por último, se cierra el flujo de entrada para finalizar la ejecución del gráfico.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"));
Mediante el objeto
OutputStreamPoller
, el ejemplo recupera los 10 paquetes de la transmisión de salida, obtiene el contenido de la string 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-05-14 (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"
}]