Hãy đảm bảo bạn có một phiên bản MediaPipe Framework đang hoạt động. Xem hướng dẫn cài đặt.
Cách chạy ví dụ về
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!
Ví dụ
hello world
sử dụng một biểu đồ MediaPipe đơn giản trong HàmPrintHelloWorld()
, được xác định trong một 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" } )");
Bạn có thể xem biểu đồ này bằng cách sử dụng MediaPipe Visibilityr (Trình hiển thị MediaPipe) bằng cách dán Nội dung CalculatorGraphConfig bên dưới vào trình hiển thị hình ảnh. Xem tại đây để được trợ giúp về trình hiển thị hình ảnh.
input_stream: "in" output_stream: "out" node { calculator: "PassThroughCalculator" input_stream: "in" output_stream: "out1" } node { calculator: "PassThroughCalculator" input_stream: "out1" output_stream: "out" }
Biểu đồ này bao gồm 1 luồng đầu vào trên biểu đồ (
in
) và 1 luồng đầu ra trên biểu đồ (out
) và 2PassThroughCalculator
được kết nối nối tiếp.Trước khi chạy biểu đồ, đối tượng
OutputStreamPoller
được kết nối với để truy xuất đầu ra của biểu đồ và một lần chạy biểu đồ đã được bắt đầu bằngStartRun
.CalculatorGraph graph; MP_RETURN_IF_ERROR(graph.Initialize(config)); MP_ASSIGN_OR_RETURN(OutputStreamPoller poller, graph.AddOutputStreamPoller("out")); MP_RETURN_IF_ERROR(graph.StartRun({}));
Sau đó, ví dụ này sẽ tạo 10 gói (mỗi gói chứa một chuỗi "Hello" Thế giới!" với các giá trị Timestamp từ 0, 1, ... 9) bằng cách sử dụng Hàm
MakePacket
, thêm từng gói vào biểu đồ thông quain
luồng đầu vào và cuối cùng đóng luồng đầu vào để hoàn tất việc chạy biểu đồ.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"));
Thông qua đối tượng
OutputStreamPoller
, ví dụ sau đó truy xuất tất cả 10 các gói từ luồng đầu ra, lấy nội dung chuỗi ra khỏi mỗi gói và in ra nhật ký đầu ra.mediapipe::Packet packet; while (poller.Next(&packet)) { LOG(INFO) << packet.Get<string>(); }
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2024-08-20 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Thiếu thông tin tôi cần"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Quá phức tạp/quá nhiều bước"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Đã lỗi thời"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Vấn đề về bản dịch"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Vấn đề về mẫu/mã"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Khác"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Dễ hiểu"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Giúp tôi giải quyết được vấn đề"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Khác"
}]
{
"lastModified": "Cập nhật lần gần đây nhất: 2024-08-20 UTC.",
"confidential": False
}