00001 #ifndef ossimOpenCVSquaresFilter_HEADER
00002 #define ossimOpenCVSquaresFilter_HEADER
00003 #include "ossim/plugin/ossimSharedObjectBridge.h"
00004 #include "ossim/base/ossimString.h"
00005
00006
00007 #include "ossim/imaging/ossimImageSourceFilter.h"
00008 #include <ossim/imaging/ossimAnnotationObject.h>
00009 #include "cv.h"
00010
00011 class ossimOpenCVSquaresFilter : public ossimImageSourceFilter
00012 {
00013 public:
00014 ossimOpenCVSquaresFilter(ossimObject* owner=NULL);
00015 ossimOpenCVSquaresFilter(ossimImageSource* inputSource,
00016 double c1 = 1.0/3.0,
00017 double c2 = 1.0/3.0,
00018 double c3 = 1.0/3.0);
00019 ossimOpenCVSquaresFilter(ossimObject* owner,
00020 ossimImageSource* inputSource,
00021 double c1 = 1.0/3.0,
00022 double c2 = 1.0/3.0,
00023 double c3 = 1.0/3.0);
00024 virtual ~ossimOpenCVSquaresFilter();
00025 ossimString getShortName()const
00026 {
00027 return ossimString("OpenCVSquares");
00028 }
00029
00030 ossimString getLongName()const
00031 {
00032 return ossimString("OpenCV Square Object Detection");
00033 }
00034
00035 virtual ossimRefPtr<ossimImageData> getTile(const ossimIrect& tileRect, ossim_uint32 resLevel=0);
00036
00037 virtual void initialize();
00038
00039 virtual ossimScalarType getOutputScalarType() const;
00040
00041 ossim_uint32 getNumberOfOutputBands() const;
00042
00043 virtual bool saveState(ossimKeywordlist& kwl,
00044 const char* prefix=0)const;
00045
00050 virtual bool loadState(const ossimKeywordlist& kwl,
00051 const char* prefix=0);
00052 std::vector< ossimAnnotationObject * > theAnnotationObjectList;
00053 protected:
00054 ossimRefPtr<ossimImageData> theBlankTile;
00055 ossimRefPtr<ossimImageData> theTile;
00056 void runUcharTransformation(ossimImageData* tile);
00057 double theC1;
00058 double theC2;
00059 double theC3;
00060 CvMemStorage* storage ;
00061 int thresh ;
00062 CvSeq* findSquares4( IplImage* img, CvMemStorage* storage );
00063 void drawSquares( IplImage* img, CvSeq* squares );
00064 double angle( CvPoint* pt1, CvPoint* pt2, CvPoint* pt0 );
00065 TYPE_DATA
00066 };
00067
00068 #endif