Conscience Core
CscDetectorEngineMultiple.h
Go to the documentation of this file.
1 //
2 // CscDetectorEngineMultiple.h
3 // ConscienceRobotManager
4 //
5 // Created by Iliès Zaoui on 01/10/2020.
6 // Copyright © 2020 Conscience Robotics. All rights reserved.
7 //
8 
9 #ifndef CscDetectorEngineMultiple_h
10 #define CscDetectorEngineMultiple_h
11 
12 #include <optional>
13 #include <vector>
14 #include <functional>
15 #include <string>
18 #include <opencv2/opencv.hpp>
19 
20 using std::optional, std::string, std::vector, std::function;
21 
22 
24 
29  vector<CscWorldObject *> detectedObjects;
30  };
31 
32  typedef function<bool(const OngoingDetectionResult &detectionResult)> DetectorIsEnabledFunction;
33 
42  private:
43  vector<CscDetectorEngine *> detectors;
44  vector<DetectorIsEnabledFunction> enabledFunctions;
45  bool drawPredictionOnImage;
46 
47  optional<float> duplicateIoUThreshold = {};
48 
49  std::unique_ptr<CscLogger> logger;
50 
51  static bool alwaysEnableDetector(const OngoingDetectionResult &detectionResult) {
52  return true;
53  }
54 
55  public:
56 
57  CscDetectorEngineMultiple(const string & name, const vector<CscDetectorEngine *> & detectors = {}, bool drawPredictionOnImage = false);
58 
60  const DetectorSourceImage &image, ptr<DetectionParameters> parameters
61  ) override;
62 
66  void addDetector(CscDetectorEngine * detector, DetectorIsEnabledFunction shouldEnable = alwaysEnableDetector) {
67  detectors.push_back(detector);
68  enabledFunctions.push_back(shouldEnable);
69  }
70 
75  bool addDetectorIfNew(CscDetectorEngine * detector, DetectorIsEnabledFunction shouldEnable = alwaysEnableDetector);
76 
80  void enableDuplicateDeletion(float iouThreshold) {
81  duplicateIoUThreshold = iouThreshold;
82  }
83 
84  void setDrawPredictionOnImage(bool drawPredictionOnImage) {
85  this->drawPredictionOnImage = drawPredictionOnImage;
86  }
87 
88  virtual bool equals(CscDetectorEngine *) const override;
89  };
90 
91 }
92 
93 #endif
conscience_core::detector_engine::CscDetectorEngine
Definition: CscDetectorEngine.h:107
conscience_core::detector_engine::CscDetectorEngineMultiple::addDetector
void addDetector(CscDetectorEngine *detector, DetectorIsEnabledFunction shouldEnable=alwaysEnableDetector)
Definition: CscDetectorEngineMultiple.h:66
conscience_core::detector_engine::CscDetectorEngineMultiple::enableDuplicateDeletion
void enableDuplicateDeletion(float iouThreshold)
Definition: CscDetectorEngineMultiple.h:80
conscience_core::detector_engine
Definition: ConscienceVisionDetectorRepository.cpp:30
CscDetectorEngine.h
conscience_core::detector_engine::DetectorIsEnabledFunction
function< bool(const OngoingDetectionResult &detectionResult)> DetectorIsEnabledFunction
Definition: CscDetectorEngineMultiple.h:32
conscience_core::bridging::commands::environment_entities::bool
const string const string EntityVideoSourcesCommandDataType CscPoint3d CscPoint3d bool
Definition: environmentEntitiesCommands.h:545
CscWorldObject.h
conscience_core::detector_engine::CscDetectorEngineMultiple::setDrawPredictionOnImage
void setDrawPredictionOnImage(bool drawPredictionOnImage)
Definition: CscDetectorEngineMultiple.h:84
conscience_core::detector_engine::CscDetectorEngineMultiple::detectOnImage
ptr< DetectionResult > detectOnImage(const DetectorSourceImage &image, ptr< DetectionParameters > parameters) override
Definition: CscDetectorEngineMultiple.cpp:31
conscience_core::detector_engine::CscDetectorEngineMultiple::addDetectorIfNew
bool addDetectorIfNew(CscDetectorEngine *detector, DetectorIsEnabledFunction shouldEnable=alwaysEnableDetector)
Definition: CscDetectorEngineMultiple.cpp:136
conscience_core::detector_engine::DetectorSourceImage
Definition: CscDetectorEngine.h:66
conscience_core::detector_engine::CscDetectorEngineMultiple::equals
virtual bool equals(CscDetectorEngine *) const override
Definition: CscDetectorEngineMultiple.cpp:146
conscience_core::detector_engine::OngoingDetectionResult::detectedObjects
vector< CscWorldObject * > detectedObjects
Definition: CscDetectorEngineMultiple.h:29
conscience_core::detector_engine::OngoingDetectionResult
Definition: CscDetectorEngineMultiple.h:28
conscience_core::detector_engine::CscDetectorEngineMultiple::CscDetectorEngineMultiple
CscDetectorEngineMultiple(const string &name, const vector< CscDetectorEngine * > &detectors={}, bool drawPredictionOnImage=false)
Definition: CscDetectorEngineMultiple.cpp:21
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29
conscience_core::detector_engine::CscDetectorEngineMultiple
Definition: CscDetectorEngineMultiple.h:41