Conscience Core
CscDetectorEngine.h
Go to the documentation of this file.
1 //
2 // ConscienceDetectorEngine.hpp
3 // ConscienceRobotManager
4 //
5 // Created by Iliès Zaoui on 14/07/2019.
6 // Copyright © 2019 IliesZaoui. All rights reserved.
7 //
8 
9 #ifndef CscDetectorEngine_h
10 #define CscDetectorEngine_h
11 
13 #include <CscCommon.h>
14 
16 
17 using std::move, std::runtime_error, std::stringstream, std::optional, std::max;
18 using namespace conscience_core::ai::data;
19 namespace cv {
20 class Mat;
21 };
22 
24 
26 public:
27  const vector<CscWorldObject *> detectedObjects;
31  const optional<int> distanceInPixelsFromCenterTop;
32  const optional<int> distanceInPixelsFromCenterRight;
34 
38  DetectionResult(const vector<CscWorldObject *> &detectedObjects,
39  float distanceInMetersFromCenterTop,
40  float distanceInMetersFromCenterRight,
41  float distanceInMetersFromLensFront,
42  const vector<CscRect2d> &detectedObjectsRectangles,
43  optional<int> distanceInPixelsFromCenterTop = {},
44  optional<int> distanceInPixelsFromCenterRight = {},
45  const optional<string> extractedData = {},
46  const map<string, map<string, CscPublicAIData *>> &generatedPublicAIData = {});
47 
51  const CscRect2d &getDetectedObjectRectangle(int detectedObjectIndex) const;
52 
53  bool didDetectSomething() const;
54 
55  bool doRectanglesFitIn(const CscSize2d &dimension) const;
56 
57  static ptr<DetectionResult> empty();
58 
59  const map<string, map<string, CscPublicAIData *>> &getGeneratedPublicAIData() const;
60 
61 private:
62  const vector<CscRect2d> detectedObjectsRectangles;
63  const map<string, map<string, CscPublicAIData *>> generatedPublicAIData;
64 };
65 
67 public:
72  DetectorSourceImage(const cv::Mat &originalImage, cv::Mat &resultingImage);
76  const cv::Mat &getOriginalImage() const;
80  cv::Mat &getResultingImage() const;
81 
82 private:
83  const cv::Mat &originalImage;
84  cv::Mat &resultingImage;
85 };
86 
90 
91  LenseParameter(const CscPoint3d &lensePosition, const CscPoint3d &lenseEuler);
92  const CscPoint3d &getPosition() const;
93  const CscPoint3d &getEuler() const;
94 };
95 
98  const map<string, void *> additionalParameters;
99 
101  const LenseParameter *lense,
102  const map<string, void *> &additionalParameters);
104  static ptr<DetectionParameters> defaultParams();
105 };
106 
108 public:
109  virtual ptr<DetectionResult> detectOnImage(
110  const DetectorSourceImage &image, ptr<DetectionParameters> parameters) = 0;
111 
112  void drawTarget(cv::Mat &image, float x, float y);
113 
114  virtual ~CscDetectorEngine() = default;
115 
116  virtual bool equals(CscDetectorEngine *) const = 0;
117 
118 protected:
120 
121  void shiftDetectedObjectsForLense(const vector<CscWorldObject *> &resultObjList, const LenseParameter *lense) const;
122 
126  static void drawDetectedObjectBox(cv::Mat &frame, const CscRect2d &boxRectangle, float estimatedDistanceMeter, float certitude, const string &objectName, const Vec3 &color = Vec3(255, 178, 50));
127 
131  void safeAddRectangle(vector<CscRect2d> &rectangles, CscRect2d &rectangle, cv::Mat &image);
132 };
133 }
134 #endif
conscience_core::axiomes::CscPoint3d
The CscPoint3d class represents a point in three-dimensional space. It is primarily used to denote a ...
Definition: Csc3dTypes.h:24
conscience_core::detector_engine::CscDetectorEngine
Definition: CscDetectorEngine.h:107
conscience_core::detector_engine::DetectionResult::extractedData
const optional< string > extractedData
Definition: CscDetectorEngine.h:33
conscience_core::detector_engine::DetectionParameters
Definition: CscDetectorEngine.h:96
conscience_core::detector_engine
Definition: ConscienceVisionDetectorRepository.cpp:30
conscience_core::detector_engine::LenseParameter::lenseEuler
CscPoint3d lenseEuler
Definition: CscDetectorEngine.h:89
CscWorldObject.h
CscPublicAIData.h
conscience_core::ai::data
Definition: CscPublicAIData.cpp:4
CscCommon.h
conscience_core::axiomes::CscPoint2d
Definition: Csc2dTypes.h:21
conscience_core::detector_engine::LenseParameter
Definition: CscDetectorEngine.h:87
conscience_core::detector_engine::DetectionResult::distanceInPixelsFromCenterTop
const optional< int > distanceInPixelsFromCenterTop
Definition: CscDetectorEngine.h:31
conscience_core::detector_engine::LenseParameter::lensePosition
CscPoint3d lensePosition
Definition: CscDetectorEngine.h:88
conscience_core::detector_engine::DetectorSourceImage
Definition: CscDetectorEngine.h:66
conscience_core::detector_engine::DetectionParameters::lense
const LenseParameter * lense
Definition: CscDetectorEngine.h:97
conscience_core::detector_engine::DetectionResult::distanceInPixelsFromCenterRight
const optional< int > distanceInPixelsFromCenterRight
Definition: CscDetectorEngine.h:32
conscience_core::detector_engine::DetectionResult::detectedObjects
const vector< CscWorldObject * > detectedObjects
Definition: CscDetectorEngine.h:27
conscience_core::axiomes::CscRect2d
Definition: Csc2dTypes.h:114
conscience_core::detector_engine::DetectionParameters::additionalParameters
const map< string, void * > additionalParameters
Definition: CscDetectorEngine.h:98
conscience_core::detector_engine::DetectionResult
Definition: CscDetectorEngine.h:25
conscience_core::detector_engine::DetectionResult::distanceInMetersFromCenterRight
const float distanceInMetersFromCenterRight
Definition: CscDetectorEngine.h:29
cv
Definition: CscEntityDetectionState.h:24
conscience_core::detector_engine::DetectionResult::distanceInMetersFromLensFront
const float distanceInMetersFromLensFront
Definition: CscDetectorEngine.h:30
conscience_core::axiomes::Vec3
Definition: Csc3dTypes.h:367
conscience_core::bridging::commands::environment_objects::optional< string >
const ptr< CscObjectModel > const string const CscPoint3d const CscPoint3d optional< string >
Definition: environmentObjectsCommands.h:373
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29
conscience_utils::equals
bool equals(const map< K, V > &map1, const map< K, V > &map2)
Definition: conscience_util.h:527
conscience_core::detector_engine::DetectionResult::distanceInMetersFromCenterTop
const float distanceInMetersFromCenterTop
Definition: CscDetectorEngine.h:28