summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ovision/see/magnifier.cc
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert/src/ovision/see/magnifier.cc')
-rw-r--r--2005/i/robert/src/ovision/see/magnifier.cc59
1 files changed, 39 insertions, 20 deletions
diff --git a/2005/i/robert/src/ovision/see/magnifier.cc b/2005/i/robert/src/ovision/see/magnifier.cc
index c528444..66db1b4 100644
--- a/2005/i/robert/src/ovision/see/magnifier.cc
+++ b/2005/i/robert/src/ovision/see/magnifier.cc
@@ -8,13 +8,14 @@
#include "magnifier.hh"
#include "skittle.hh"
-
+
/// Constructeur
-Magnifier::Magnifier (Img *img, Segm *segm)
- : segm_ (segm), img_ (img)
+Magnifier::Magnifier (Img *img, Segm *segm, Group::ZoneType aim)
+: segm_ (segm), img_ (img), aim_ (aim), skittleList_ (0)
{
oconfig_ = OConfig::getInstance ();
itemList_ = new std::vector<Zone>[Group::nbZoneType];
+ skittleList_ = new std::vector<Skittle>;
}
/// Destructeur
@@ -29,18 +30,18 @@ Magnifier::~Magnifier (void)
/// @param type type du group à rechercher GOAL ou BALL
/// @param y coordonnees de la hauteur de la balle
/*int
-Group::GetDelta (int type, int y)
-{
- if (type == BALL)
- return (int)(25 + y*0.1);
-
- else return 3*(int)(25 + y*0.1);
-}
-*/
+ Group::GetDelta (int type, int y)
+ {
+ if (type == BALL)
+ return (int)(25 + y*0.1);
+
+ else return 3*(int)(25 + y*0.1);
+ }
+ */
/// Analyse une liste de zones
/// @param zoneList liste des zones extraites par la classe group
-void
+bool
Magnifier::analyse (std::vector<Zone> &zoneList)
{
// remise à zéro de toutes les listes
@@ -80,11 +81,24 @@ Magnifier::analyse (std::vector<Zone> &zoneList)
break;
}
}
- if (itemList_[Group::redSkittle].size () != 0)
+ skittleList_->clear ();
+ if (itemList_[aim_].size () != 0)
{
- Zone &z = itemList_[Group::redSkittle][0];
- isSkittle (z);
+ bool find = 0;
+ for (std::vector<Zone>::iterator iter = itemList_[aim_].begin ();
+ iter != itemList_[aim_].end (); ++iter)
+ {
+ Skittle *s = isSkittle (*iter);
+ if (s)
+ {
+ skittleList_->push_back (*s);
+ delete s;
+ find = 1;
+ }
+ }
+ return find;
}
+ return false;
}
@@ -111,13 +125,18 @@ Magnifier::checkIsUnique (const Zone &zone)
}
/// Test si l'objet est une quille
-bool
+Skittle*
Magnifier::isSkittle (Zone &zone)
{
- Skittle s (img_, segm_);
- s.analyse (zone, itemList_[Group::reflectBand]);
- s.show ();
- return true;
+ Skittle *s = new Skittle (img_, segm_);
+ if (s->analyse (zone, itemList_[Group::reflectBand]))
+ {
+ s->show ();
+ return s;
+ }
+ else
+ delete s;
+ return 0;
}
/// Test si l'objet est une quille rouge