// Copyright 2019 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // A protocol buffer containing location information. It allows for storing // location information related to an image in several formats -- relative // and absolute bounding boxes, foreground mask. // See location.h for a helper wrapper to work with the LocationData. syntax = "proto2"; package mediapipe; import "mediapipe/framework/formats/annotation/rasterization.proto"; option java_package = "com.google.mediapipe.formats.proto"; option java_outer_classname = "LocationDataProto"; message LocationData { // The supported formats for representing location data. A single location // must store its data in exactly one way. enum Format { // The full image. This is a handy format when one needs to refer to the // full image, e.g. one uses global image labels. No other fields need to // be populated. GLOBAL = 0; // A rectangle aka bounding box of an object. The field bounding_box must be // used to store the location data. BOUNDING_BOX = 1; // A rectangle aka bounding box of an object, defined in coordinates // normalized by the image dimensions. The field relative_bounding_box must // be used to store the location data. RELATIVE_BOUNDING_BOX = 2; // A foreground mask. The field mask must be used to store the location // data. MASK = 3; } optional Format format = 1; // A bounding box in pixel units. The box is defined by its upper left corner // (xmin, ymin) and its width and height. message BoundingBox { optional int32 xmin = 1; optional int32 ymin = 2; optional int32 width = 3; optional int32 height = 4; } optional BoundingBox bounding_box = 2; // A bounding box. The box is defined by its upper left corner (xmin, ymin) // and its width and height, all in coordinates normalized by the image // dimensions. message RelativeBoundingBox { optional float xmin = 1; optional float ymin = 2; optional float width = 3; optional float height = 4; } optional RelativeBoundingBox relative_bounding_box = 3; // A mask of size equivalent to the image size. It encodes a region, which // can be thought of as a foreground object mask. message BinaryMask { // Dimensions of the mask. optional int32 width = 1; optional int32 height = 2; // A rasterization-like format for storing the mask. optional Rasterization rasterization = 3; } optional BinaryMask mask = 4; // A keypoint. The keypoint is defined by the coordinates (x, y), normalized // by the image dimensions. message RelativeKeypoint { optional float x = 1; optional float y = 2; optional string keypoint_label = 3; optional float score = 4; } repeated RelativeKeypoint relative_keypoints = 5; }