/home/fwph/code/wurde/modules/visionModule/visionModule.H

Go to the documentation of this file.
00001 #ifndef _VISION_MODULE_H
00002 #define _VISION_MODULE_H
00003 
00004 #include <Capability.H>
00005 #include <opencv/cv.h>
00006 #include <vector>
00007 #include <map>
00008 #include <WURDECam.H>
00009 #include <string>
00010 #include <Logger.H>
00011 #include <ImageSource.H>
00012 #include <dlfcn.h>
00013 
00014 namespace WURDEVision {
00015 
00019        //       typedef std::pair<IplImage *,WURDE::Time> WURDEImage;
00020 
00025        typedef struct CameraConfig_t {
00026                std::string name;
00027                std::map<std::string,std::string> options;
00028        } CameraConfig;
00029 
00033        std::vector<CameraConfig> parseCameraFile(std::string config);
00034 
00039        typedef struct {
00040               std::string name;
00041               std::string type;
00042               std::multimap<std::string,std::string> options;
00043               std::vector<CameraConfig> cameras;
00044        } OperatorConfig;
00045 
00050        typedef struct {
00051               std::vector<CameraConfig> cameras;
00052               std::vector<OperatorConfig> operators;
00053               std::vector<std::string> plugins;
00054        } VisionModuleConfig;
00055 
00063        class VisionOperator {
00064        public:
00065               VisionOperator(std::string name){m_name=name;};
00066               ~VisionOperator(){}
00067               
00073               virtual void initOperator()=0;
00074 
00080               virtual void runOperator(WURDE::WURDEImage image)=0;
00081               
00087               virtual void runOperator(WURDE::WURDEImage image1, WURDE::WURDEImage image2)=0;
00088               
00092               virtual void quitOperator()=0;
00093               
00097               std::list<WURDE::Capability *> *getSuppliers(){WURDE::g_debug("returning supppliers"); return &m_supplierList;}
00098 
00102               std::list<WURDE::Capability *> *getConsumers(){return &m_consumerList;}
00103 
00107               WURDE::RunState getState(){return m_state;}
00108 
00112               bool isStereoModule(){return m_stereo;}
00113 
00117               std::string getName(){return m_name;}
00118 
00122               void setName(std::string name){m_name=name;}
00123               
00127               void setFormat(WURDE::ImageFormat format){ m_format=format;}
00128 
00132               WURDE::ImageFormat getFormat(){return m_format;}
00133               
00137               void setCameras(std::vector<WURDEVision::CameraConfig> cams){m_cameras=cams;}
00138 
00142               std::string getCamera0(){return m_cameras[0].name;}
00143 
00147               std::string getCamera1(){if(m_cameras.size()>1){return m_cameras[1].name;}else{return "Null";}}
00148        protected:
00152               WURDE::RunState m_state;
00156               void registerSupplier(WURDE::Capability *someObject){m_supplierList.push_back(someObject);}
00157 
00161               void registerConsumer(WURDE::Capability *someObject){m_consumerList.push_back(someObject);}
00162               std::string m_name;
00163 
00167               bool m_stereo;
00168 
00172               WURDE::ImageFormat m_format;
00173 
00174        private:
00175               std::vector<WURDEVision::CameraConfig> m_cameras;
00176               std::list<WURDE::Capability *> m_supplierList;
00177               std::list<WURDE::Capability *> m_consumerList;
00178        };
00179 
00180         VisionModuleConfig parseVisionFile(std::string config, std::string modName, std::vector<CameraConfig> &cameras);
00181         //fakeit indicates that we're not really starting up, just registering.
00182         void loadOperators(VisionModuleConfig &theConfig,std::list<VisionOperator *> &theOperators,bool fakeit);
00183         void loadCameras(VisionModuleConfig &theConfig, std::vector<WURDECamera *> &cameras);
00184               
00189        void loadOperatorMap(std::vector<std::string> operatorLibs);
00190 }
00191 
00195 typedef WURDEVision::VisionOperator *voperatorloader_ptr(std::string name);
00196 
00200 extern "C" {
00201         extern std::map<std::string, voperatorloader_ptr *, std::less<std::string> > operatorFactory;
00202 }
00203 
00204 #endif 

Generated on Thu Feb 1 15:31:52 2007 for WURDE by  doxygen 1.5.1