在开发Mediapipe应用时,有时需要获取计算图输出的ROI,在mp中是用NormalizedRect来表示一个ROI的。在用Bazel打包Mediapipe的AAR时,默认是不打包NormalizedRect类。若要把NormalizedRect类包含到AAR中,只需要修改mediapipe/java/com/google/mediapipe/mediapipe_aar.bzl文件,把NormalizedRect的相关内容加上即可:
在def _mediapipe_proto(name):函数里增加:
_proto_java_src_generator(
name = "rect_proto",
proto_src = "mediapipe/framework/formats/rect.proto",
java_lite_out = "com/google/mediapipe/formats/proto/RectProto.java",
srcs = ["//mediapipe/framework/formats:protos_src"],
)
在android_library中增加:
"com/google/mediapipe/formats/proto/RectProto.java"
编译后的AAR文件将会包含NormalizedRect类。
可以在APP中获取ROI:
processor.addPacketCallback( "hand_rects_from_palm_detections", (packet) -> { com.google.protobuf.Parser<RectProto.NormalizedRect> parser = RectProto.NormalizedRect.parser(); List<RectProto.NormalizedRect> ROIs = PacketGetter.getProtoVector(packet, parser); Log.v(TAG, "Received hand_rects_from_palm_detections packet. ROIs: " + getROIRectDebugString(ROIs)); });