Sprawdź, czy masz działającą wersję MediaPipe Framework. Zobacz instrukcje instalacji.
Aby uruchomić przykładowy kod
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!
W przykładzie
hello world
użyto prostego grafu MediaPipe w funkcjiPrintHelloWorld()
zdefiniowaną w protocieCalculatorGraphConfig
.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" } )");
Możesz zwizualizować ten wykres za pomocą MediaPipe Visualizer, wklejając wartość Poniżej znajdziesz zawartość CalculatorGraphConfig do wizualizacji. Zobacz tutaj, aby uzyskać pomoc dotyczącą wizualizacji.
input_stream: "in" output_stream: "out" node { calculator: "PassThroughCalculator" input_stream: "in" output_stream: "out1" } node { calculator: "PassThroughCalculator" input_stream: "out1" output_stream: "out" }
Ten wykres składa się z 1 strumienia wejściowego wykresu (
in
) i 1 strumienia wyjściowego wykresu (out
) i 2 urządzeniaPassThroughCalculator
połączone szeregowo.Przed uruchomieniem grafu obiekt
OutputStreamPoller
jest połączony z strumienia wyjściowego, by później pobrać dane wyjściowe wykresu, a także uruchomić wykres rozpoczyna się odStartRun
.CalculatorGraph graph; MP_RETURN_IF_ERROR(graph.Initialize(config)); MP_ASSIGN_OR_RETURN(OutputStreamPoller poller, graph.AddOutputStreamPoller("out")); MP_RETURN_IF_ERROR(graph.StartRun({}));
Następnie tworzy 10 pakietów (każdy z nich zawiera ciąg „Hello”, świecie!”. z wartościami sygnatur czasowych z zakresu 0, 1, ... 9) za pomocą funkcji
MakePacket
, dodaje każdą pakiet do wykresu za pomocą funkcjiin
strumienia wejściowego, a na koniec zamyka strumień wejściowy, by zakończyć wyświetlanie wykresu.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"));
Za pomocą obiektu
OutputStreamPoller
przykład pobiera wszystkie 10 ze strumienia wyjściowego – pobiera zawartość ciągu znaków z każdego pakietu i wydrukuje go w dzienniku wyjściowym.mediapipe::Packet packet; while (poller.Next(&packet)) { LOG(INFO) << packet.Get<string>(); }
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2024-09-05 UTC.