00001 #ifndef __DETECTOR_CHAIN_OPERATOR_H__ 00002 #define __DETECTOR_CHAIN_OPERATOR_H__ 00003 00004 #include <string> 00005 #include <cmvision.h> 00006 #include <map> 00007 #include "../visionModule.H" 00008 #include <RobotObject.H> 00009 #include <pthread.h> 00010 #include <RoleConfiguration.H> 00011 #include <RangeFinder.H> 00012 00013 namespace RobotVision { 00014 00015 class DetectorChainOperator : public VisionOperator { 00016 public: 00017 DetectorChainOperator(std::string name); 00018 ~DetectorChainOperator(); 00019 00020 void initOperator(); 00021 void runOperator(RobotObjects::RoleImage image, RobotObjects::RoleImage stereo); 00022 void runOperator(RobotObjects::RoleImage theimage); 00023 void quitOperator(); 00024 00025 protected: 00026 std::vector<RobotObjects::RobotObject *> m_consumers; 00027 std::vector<ObjectDetector *> m_detectorChain; 00028 00029 }; 00030 00035 typedef std::vector<RobotObjects::Point> Region; 00036 00040 typedef std::pair<Region,float> ProbabilityRegion; 00041 00050 class ObjectDetector { 00051 00052 public: 00053 explicit virtual ObjectDetector(std::string operatorName)=0; 00054 virtual ~ObjectDetector() = 0; 00055 00064 virtual std::vector<ProbabilityRegion> filterRegions(std::vector<ProbabilityRegion> ®ions, RoleImage *image) = 0; 00065 std::vector<RobotObjects::RobotObject *> *getConsumers(){return &m_consumers;} 00066 private: 00067 std::string m_operatorName; 00068 std::vector<RobotObjects::RobotObject *> m_consumers; 00069 }; 00070 00071 }; 00072 00073 #endif