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