00001 #include "Component/ModelManager.H" 00002 #include "Component/OptionManager.H" 00003 00004 #include "Component/ModelComponent.H" 00005 #include "Component/ModelParam.H" 00006 #include "Media/FrameSeries.H" 00007 #include "Transport/FrameInfo.H" 00008 #include "Raster/GenericFrame.H" 00009 #include "Image/Image.H" 00010 #include "GUI/XWinManaged.H" 00011 #include "GUI/ImageDisplayStream.H" 00012 #include "Image/Image.H" 00013 #include "Image/Pixels.H" 00014 #include "Robots/SeaBeeIII/VisionBrainComponentI.H" 00015 00016 #include "Ice/RobotBrainObjects.ice.H" 00017 #include "Ice/RobotSimEvents.ice.H" 00018 #include "Ice/IceImageUtils.H" 00019 #include <opencv/cv.h> 00020 #include <IceUtil/Thread.h> 00021 00022 #ifndef BINFINDER_H 00023 #define BINFINDER_H 00024 00025 00026 class BinFinder : public VisionBrainComponentI 00027 { 00028 public: 00029 00030 BinFinder(OptionManager& mgr, 00031 const std::string& descrName = "BinFinder", 00032 const std::string& tagName = "BinFinder"); 00033 00034 ~BinFinder(); 00035 00036 virtual void updateFrame(Image<PixRGB<byte> > img, std::string cameraId); 00037 00038 //!Get a message 00039 //virtual void updateMessage(const RobotSimEvents::EventMessagePtr& eMsg, 00040 //const Ice::Current&); 00041 00042 virtual void registerTopics(); 00043 00044 private: 00045 CvSeq* findSquares4( IplImage* img, CvMemStorage* storage ); 00046 double angle( CvPoint* pt1, CvPoint* pt2, CvPoint* pt0 ); 00047 00048 bool inCorner(CvSeq* result); 00049 00050 00051 rutz::shared_ptr<XWinManaged> itsMwin; // display window 00052 Image<PixRGB<byte> > itsDisp; // display image 00053 uint itsWidth; 00054 uint itsHeight; 00055 }; 00056 00057 #endif