مطمئن شوید که یک نسخه فعال از MediaPipe Framework دارید. دستورالعمل نصب را ببینید.
برای اجرای مثال
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!
مثال
hello world
از یک نمودار MediaPipe ساده در تابعPrintHelloWorld()
استفاده می کند که در پروتوCalculatorGraphConfig
تعریف شده است.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" } )");
می توانید با چسباندن محتوای CalculatorGraphConfig زیر در ویژوالایزر، این نمودار را با استفاده از MediaPipe Visualizer تجسم کنید. برای راهنمایی در مورد ویژوالایزر اینجا را ببینید.
input_stream: "in" output_stream: "out" node { calculator: "PassThroughCalculator" input_stream: "in" output_stream: "out1" } node { calculator: "PassThroughCalculator" input_stream: "out1" output_stream: "out" }
این نمودار شامل 1 جریان ورودی گراف (
in
) و 1 جریان خروجی گراف (out
) و 2PassThroughCalculator
است که به صورت سریال متصل شده اند.قبل از اجرای نمودار، یک شی
OutputStreamPoller
به جریان خروجی متصل می شود تا بعداً خروجی نمودار را بازیابی کند، و اجرای گراف باStartRun
شروع می شود.CalculatorGraph graph; MP_RETURN_IF_ERROR(graph.Initialize(config)); MP_ASSIGN_OR_RETURN(OutputStreamPoller poller, graph.AddOutputStreamPoller("out")); MP_RETURN_IF_ERROR(graph.StartRun({}));
سپس این مثال با استفاده از تابع
MakePacket
10 بسته را ایجاد می کند (هر بسته حاوی یک رشته "Hello World!" با مقادیر Timestamp از 0، 1، ... 9 است)، هر بسته را از طریق جریانin
به نمودار اضافه می کند، و در نهایت جریان ورودی را می بندد تا اجرای نمودار تمام شود.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"));
از طریق شی
OutputStreamPoller
، نمونه تمام 10 بسته را از جریان خروجی بازیابی می کند، محتوای رشته را از هر بسته خارج می کند و آن را در گزارش خروجی چاپ می کند.mediapipe::Packet packet; while (poller.Next(&packet)) { LOG(INFO) << packet.Get<string>(); }
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2024-11-12 بهوقت ساعت هماهنگ جهانی.