xref: /aosp_15_r20/external/armnn/samples/ObjectDetection/include/BoundingBox.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #pragma once
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker namespace od
9*89c4ff92SAndroid Build Coastguard Worker {
10*89c4ff92SAndroid Build Coastguard Worker /**
11*89c4ff92SAndroid Build Coastguard Worker * @brief Class used to store and receive bounding box location and size information
12*89c4ff92SAndroid Build Coastguard Worker *
13*89c4ff92SAndroid Build Coastguard Worker */
14*89c4ff92SAndroid Build Coastguard Worker class BoundingBox
15*89c4ff92SAndroid Build Coastguard Worker {
16*89c4ff92SAndroid Build Coastguard Worker public:
17*89c4ff92SAndroid Build Coastguard Worker     /**
18*89c4ff92SAndroid Build Coastguard Worker     * @brief Default constructor
19*89c4ff92SAndroid Build Coastguard Worker     */
20*89c4ff92SAndroid Build Coastguard Worker     BoundingBox();
21*89c4ff92SAndroid Build Coastguard Worker 
22*89c4ff92SAndroid Build Coastguard Worker     /**
23*89c4ff92SAndroid Build Coastguard Worker     * @brief Constructor with parameters to configure the bounding box dimensions
24*89c4ff92SAndroid Build Coastguard Worker     * @param[in]  x                       int value representing the x coordinate.
25*89c4ff92SAndroid Build Coastguard Worker     * @param[in]  y                       int value representing the y coordinate.
26*89c4ff92SAndroid Build Coastguard Worker     * @param[in]  width                   unsigned int value representing the width value.
27*89c4ff92SAndroid Build Coastguard Worker     * @param[in]  height                  unsigned int value representing the height value.
28*89c4ff92SAndroid Build Coastguard Worker     */
29*89c4ff92SAndroid Build Coastguard Worker     BoundingBox(int x, int y, unsigned int width, unsigned int height);
30*89c4ff92SAndroid Build Coastguard Worker 
31*89c4ff92SAndroid Build Coastguard Worker     /**
32*89c4ff92SAndroid Build Coastguard Worker     * @brief Constructor with a BoundingBox type parameter to copy from.
33*89c4ff92SAndroid Build Coastguard Worker     * @param[in]  other                   Bounding box to copy.
34*89c4ff92SAndroid Build Coastguard Worker     */
35*89c4ff92SAndroid Build Coastguard Worker     BoundingBox(const BoundingBox& other);
36*89c4ff92SAndroid Build Coastguard Worker 
37*89c4ff92SAndroid Build Coastguard Worker     ~BoundingBox() = default;
38*89c4ff92SAndroid Build Coastguard Worker 
39*89c4ff92SAndroid Build Coastguard Worker     /**
40*89c4ff92SAndroid Build Coastguard Worker     * @brief Function to retrieve the X coordinate.
41*89c4ff92SAndroid Build Coastguard Worker     */
42*89c4ff92SAndroid Build Coastguard Worker     int GetX() const;
43*89c4ff92SAndroid Build Coastguard Worker 
44*89c4ff92SAndroid Build Coastguard Worker     /**
45*89c4ff92SAndroid Build Coastguard Worker     * @brief Function to retrieve the Y coordinate.
46*89c4ff92SAndroid Build Coastguard Worker     */
47*89c4ff92SAndroid Build Coastguard Worker     int GetY() const;
48*89c4ff92SAndroid Build Coastguard Worker 
49*89c4ff92SAndroid Build Coastguard Worker     /**
50*89c4ff92SAndroid Build Coastguard Worker     * @brief Function to retrieve the width.
51*89c4ff92SAndroid Build Coastguard Worker     */
52*89c4ff92SAndroid Build Coastguard Worker     unsigned int GetWidth() const;
53*89c4ff92SAndroid Build Coastguard Worker 
54*89c4ff92SAndroid Build Coastguard Worker     /**
55*89c4ff92SAndroid Build Coastguard Worker     * @brief Function to retrieve the height.
56*89c4ff92SAndroid Build Coastguard Worker     */
57*89c4ff92SAndroid Build Coastguard Worker     unsigned int GetHeight() const;
58*89c4ff92SAndroid Build Coastguard Worker 
59*89c4ff92SAndroid Build Coastguard Worker     /**
60*89c4ff92SAndroid Build Coastguard Worker     * @brief Function to set the X coordinate.
61*89c4ff92SAndroid Build Coastguard Worker     * @param[in]  x                      int value representing x coordinate
62*89c4ff92SAndroid Build Coastguard Worker     */
63*89c4ff92SAndroid Build Coastguard Worker     void SetX(int x);
64*89c4ff92SAndroid Build Coastguard Worker 
65*89c4ff92SAndroid Build Coastguard Worker     /**
66*89c4ff92SAndroid Build Coastguard Worker     * @brief Function to set the Y coordinate.
67*89c4ff92SAndroid Build Coastguard Worker     * @param[in]  y                      int value representing y coordinate
68*89c4ff92SAndroid Build Coastguard Worker     */
69*89c4ff92SAndroid Build Coastguard Worker     void SetY(int y);
70*89c4ff92SAndroid Build Coastguard Worker 
71*89c4ff92SAndroid Build Coastguard Worker     /**
72*89c4ff92SAndroid Build Coastguard Worker     * @brief Function to set the width of the BoundingBox.
73*89c4ff92SAndroid Build Coastguard Worker     * @param[in]  width                  int value representing the width
74*89c4ff92SAndroid Build Coastguard Worker     */
75*89c4ff92SAndroid Build Coastguard Worker     void SetWidth(unsigned int width);
76*89c4ff92SAndroid Build Coastguard Worker 
77*89c4ff92SAndroid Build Coastguard Worker     /**
78*89c4ff92SAndroid Build Coastguard Worker     * @brief Function to set the height of the BoundingBox.
79*89c4ff92SAndroid Build Coastguard Worker     * @param[in]  height                 int value representing the height
80*89c4ff92SAndroid Build Coastguard Worker     */
81*89c4ff92SAndroid Build Coastguard Worker     void SetHeight(unsigned int height);
82*89c4ff92SAndroid Build Coastguard Worker 
83*89c4ff92SAndroid Build Coastguard Worker     /**
84*89c4ff92SAndroid Build Coastguard Worker     * @brief Function to check equality with another BoundingBox
85*89c4ff92SAndroid Build Coastguard Worker     * @param[in]  other                  BoundingBox to compare with
86*89c4ff92SAndroid Build Coastguard Worker     */
87*89c4ff92SAndroid Build Coastguard Worker     BoundingBox& operator=(const BoundingBox& other);
88*89c4ff92SAndroid Build Coastguard Worker 
89*89c4ff92SAndroid Build Coastguard Worker private:
90*89c4ff92SAndroid Build Coastguard Worker     int m_X;
91*89c4ff92SAndroid Build Coastguard Worker     int m_Y;
92*89c4ff92SAndroid Build Coastguard Worker     unsigned int m_Width;
93*89c4ff92SAndroid Build Coastguard Worker     unsigned int m_Height;
94*89c4ff92SAndroid Build Coastguard Worker };
95*89c4ff92SAndroid Build Coastguard Worker 
96*89c4ff92SAndroid Build Coastguard Worker /*
97*89c4ff92SAndroid Build Coastguard Worker  * @brief: Get a bounding box within the limits of another bounding box
98*89c4ff92SAndroid Build Coastguard Worker  *
99*89c4ff92SAndroid Build Coastguard Worker  * @param[in]   boxIn       Input bounding box
100*89c4ff92SAndroid Build Coastguard Worker  * @param[out]  boxOut      Output bounding box
101*89c4ff92SAndroid Build Coastguard Worker  * @param[in]   boxLimits   Bounding box defining the limits which the output
102*89c4ff92SAndroid Build Coastguard Worker  *                          needs to conform to.
103*89c4ff92SAndroid Build Coastguard Worker  * @return      none
104*89c4ff92SAndroid Build Coastguard Worker  */
105*89c4ff92SAndroid Build Coastguard Worker void GetValidBoundingBox(const BoundingBox& boxIn, BoundingBox& boxOut,
106*89c4ff92SAndroid Build Coastguard Worker     const BoundingBox& boxLimits);
107*89c4ff92SAndroid Build Coastguard Worker 
108*89c4ff92SAndroid Build Coastguard Worker }// namespace od