00001 #ifndef SEARCHANGLESADAM_H
00002 #define SEARCHANGLESADAM_H
00003
00004 #include "recognition.h"
00005 #include "../microadam.h"
00006 #include "canny.h"
00007 #include "correlation.h"
00008 #include "../opencvext.h"
00009 #include "../polarline.h"
00010 #include <iostream>
00011
00012 using namespace std;
00013
00014 namespace seemicro
00015 {
00016
00017 const int MAX_MAX_MAXIMA = 30;
00018 const int MAXPL=40;
00019
00020 struct SearchAnglesAdam : public RecognitionModule
00021 {
00022 MicroAdam& adam;
00023 CannyModule& canny;
00024 CorrelationModule& correlation;
00025
00030 CvMemStorage* storage;
00031 CvSeq* lines;
00032 polarLine polarLines[MAXPL], l1, l2, mline;
00033 mypoint p1, p2;
00034 float dr2;
00035 myrect rect;
00036
00041 int searchStatus;
00042
00046 int angres, distres;
00047 int hough_threshold;
00048 int houghMaxGap;
00049
00050 SearchAnglesAdam(MicroAdam& Am, CorrelationModule& Aco, CannyModule& Ac) :
00051 adam(Am), canny(Ac), correlation(Aco)
00052 {
00053 distres = 200;
00054 angres = 200;
00055 hough_threshold = 15;
00056 lines = NULL;
00057 storage = cvCreateMemStorage(0);
00058 rect = cvRect(0, 0, canny.img->width, canny.img->height);
00059 searchStatus = -2;
00060 houghMaxGap = 20;
00061 }
00062
00063 ~SearchAnglesAdam()
00064 {
00065 if(lines) cvClearSeq(lines);
00066 cvReleaseMemStorage(&storage);
00067 }
00068
00069 void processFrame(myrect *ROI) { searchStatus = searchAngles(); }
00070 void processKeyFrame(void) { searchStatus = searchAngles(); }
00071
00080 int searchAngles();
00081
00082
00083 };
00084
00085 }
00086
00087 #endif