xref: /aosp_15_r20/external/armnn/samples/ObjectDetection/include/DetectedObject.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 #include "BoundingBox.hpp"
9*89c4ff92SAndroid Build Coastguard Worker 
10*89c4ff92SAndroid Build Coastguard Worker #include <string>
11*89c4ff92SAndroid Build Coastguard Worker #include <vector>
12*89c4ff92SAndroid Build Coastguard Worker 
13*89c4ff92SAndroid Build Coastguard Worker namespace od
14*89c4ff92SAndroid Build Coastguard Worker {
15*89c4ff92SAndroid Build Coastguard Worker /**
16*89c4ff92SAndroid Build Coastguard Worker  * An object detection network inference result decoded data representation.
17*89c4ff92SAndroid Build Coastguard Worker  */
18*89c4ff92SAndroid Build Coastguard Worker class DetectedObject
19*89c4ff92SAndroid Build Coastguard Worker {
20*89c4ff92SAndroid Build Coastguard Worker 
21*89c4ff92SAndroid Build Coastguard Worker public:
22*89c4ff92SAndroid Build Coastguard Worker     DetectedObject();
23*89c4ff92SAndroid Build Coastguard Worker 
24*89c4ff92SAndroid Build Coastguard Worker     /**
25*89c4ff92SAndroid Build Coastguard Worker      * Creates detection with given parameters.
26*89c4ff92SAndroid Build Coastguard Worker      *
27*89c4ff92SAndroid Build Coastguard Worker      * @param id - class id
28*89c4ff92SAndroid Build Coastguard Worker      * @param label - human readable text class label
29*89c4ff92SAndroid Build Coastguard Worker      * @param boundingBox - rectangular detection coordinates
30*89c4ff92SAndroid Build Coastguard Worker      * @param score - detection score/probability
31*89c4ff92SAndroid Build Coastguard Worker      */
32*89c4ff92SAndroid Build Coastguard Worker     DetectedObject(unsigned int id,
33*89c4ff92SAndroid Build Coastguard Worker                    std::string  label,
34*89c4ff92SAndroid Build Coastguard Worker                    const BoundingBox& boundingBox,
35*89c4ff92SAndroid Build Coastguard Worker                    float score);
36*89c4ff92SAndroid Build Coastguard Worker 
37*89c4ff92SAndroid Build Coastguard Worker     ~DetectedObject() = default;
38*89c4ff92SAndroid Build Coastguard Worker 
39*89c4ff92SAndroid Build Coastguard Worker     /**
40*89c4ff92SAndroid Build Coastguard Worker      * Get class id
41*89c4ff92SAndroid Build Coastguard Worker      * @return id
42*89c4ff92SAndroid Build Coastguard Worker      */
43*89c4ff92SAndroid Build Coastguard Worker     unsigned int GetId() const;
44*89c4ff92SAndroid Build Coastguard Worker 
45*89c4ff92SAndroid Build Coastguard Worker     /**
46*89c4ff92SAndroid Build Coastguard Worker      * Get human readable text class label
47*89c4ff92SAndroid Build Coastguard Worker      * @return label
48*89c4ff92SAndroid Build Coastguard Worker      */
49*89c4ff92SAndroid Build Coastguard Worker     const std::string& GetLabel() const;
50*89c4ff92SAndroid Build Coastguard Worker 
51*89c4ff92SAndroid Build Coastguard Worker     /**
52*89c4ff92SAndroid Build Coastguard Worker      * Get rectangular detection coordinates
53*89c4ff92SAndroid Build Coastguard Worker      * @return detection coordinates
54*89c4ff92SAndroid Build Coastguard Worker      */
55*89c4ff92SAndroid Build Coastguard Worker     const BoundingBox& GetBoundingBox() const;
56*89c4ff92SAndroid Build Coastguard Worker 
57*89c4ff92SAndroid Build Coastguard Worker     /**
58*89c4ff92SAndroid Build Coastguard Worker      * Get detection score
59*89c4ff92SAndroid Build Coastguard Worker      * @return score
60*89c4ff92SAndroid Build Coastguard Worker      */
61*89c4ff92SAndroid Build Coastguard Worker     float GetScore() const;
62*89c4ff92SAndroid Build Coastguard Worker 
63*89c4ff92SAndroid Build Coastguard Worker     /**
64*89c4ff92SAndroid Build Coastguard Worker      * Set class id
65*89c4ff92SAndroid Build Coastguard Worker      * @param[in] id - class id
66*89c4ff92SAndroid Build Coastguard Worker      */
67*89c4ff92SAndroid Build Coastguard Worker     void SetId(unsigned int id);
68*89c4ff92SAndroid Build Coastguard Worker 
69*89c4ff92SAndroid Build Coastguard Worker     /**
70*89c4ff92SAndroid Build Coastguard Worker      * Set class label
71*89c4ff92SAndroid Build Coastguard Worker      * @param[in] label - human readable text class label
72*89c4ff92SAndroid Build Coastguard Worker      */
73*89c4ff92SAndroid Build Coastguard Worker     void SetLabel(const std::string& label);
74*89c4ff92SAndroid Build Coastguard Worker 
75*89c4ff92SAndroid Build Coastguard Worker     /**
76*89c4ff92SAndroid Build Coastguard Worker      * Set detection coordinates
77*89c4ff92SAndroid Build Coastguard Worker      * @param[in] boundingBox detection coordinates
78*89c4ff92SAndroid Build Coastguard Worker      */
79*89c4ff92SAndroid Build Coastguard Worker     void SetBoundingBox(const BoundingBox& boundingBox);
80*89c4ff92SAndroid Build Coastguard Worker 
81*89c4ff92SAndroid Build Coastguard Worker     /**
82*89c4ff92SAndroid Build Coastguard Worker      * Set detection score
83*89c4ff92SAndroid Build Coastguard Worker      * @param[in] score - detection score
84*89c4ff92SAndroid Build Coastguard Worker      */
85*89c4ff92SAndroid Build Coastguard Worker     void SetScore(float score);
86*89c4ff92SAndroid Build Coastguard Worker 
87*89c4ff92SAndroid Build Coastguard Worker private:
88*89c4ff92SAndroid Build Coastguard Worker     unsigned int        m_Id;
89*89c4ff92SAndroid Build Coastguard Worker     std::string         m_Label;
90*89c4ff92SAndroid Build Coastguard Worker     BoundingBox         m_BoundingBox;
91*89c4ff92SAndroid Build Coastguard Worker     float               m_Score;
92*89c4ff92SAndroid Build Coastguard Worker };
93*89c4ff92SAndroid Build Coastguard Worker 
94*89c4ff92SAndroid Build Coastguard Worker using DetectedObjects = std::vector<DetectedObject>;
95*89c4ff92SAndroid Build Coastguard Worker 
96*89c4ff92SAndroid Build Coastguard Worker }// namespace od