summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ovision/see/group.hh
diff options
context:
space:
mode:
authorgaillaro2005-04-05 18:26:18 +0000
committergaillaro2005-04-05 18:26:18 +0000
commit97b69507c877a4644c0caac4f61e052e188f9d8e (patch)
tree1a81f341ab6577003fa60ca3fb135e7b4baeecba /2005/i/robert/src/ovision/see/group.hh
parent0062520c9cc87eeeb8828361bbb33033a6f07b7e (diff)
Renaissance de la vision :
- code standard robot - presque du C++ - apprentissage du RN sur plusieurs images - tableau de données couleurs compressé - reconnaissance de plusieurs objets possibles
Diffstat (limited to '2005/i/robert/src/ovision/see/group.hh')
-rw-r--r--2005/i/robert/src/ovision/see/group.hh83
1 files changed, 83 insertions, 0 deletions
diff --git a/2005/i/robert/src/ovision/see/group.hh b/2005/i/robert/src/ovision/see/group.hh
new file mode 100644
index 0000000..3aa0730
--- /dev/null
+++ b/2005/i/robert/src/ovision/see/group.hh
@@ -0,0 +1,83 @@
+// robert - programme du robot 2005
+//
+// Copyright (C) 2005 Olivier Gaillard
+//
+// Robot APB Team/Efrei 2005.
+// Web: http://assos.efrei.fr/robot/
+// Email: robot AT efrei DOT fr
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#ifndef group_h
+#define group_h
+
+#include <vector>
+#include <string>
+#include "img.hh"
+#include "segm.hh"
+#include "oconfig.hh"
+
+/// Liste chainee des zones trouvees par la classe group
+struct Zone
+{
+ /// type de la zone
+ int id;
+ /// bornes de la zone pour x
+ int xmin, xmax;
+ /// bornes de la zone pour y
+ int ymin, ymax;
+ /// centre de la zone trouvee
+ int centerx, centery;
+ /// l'objet est vue partiellement ou completement
+ bool partial;
+ /// l'objet est situé en bas de l'image
+ bool bottom;
+};
+
+/// Cree une liste chainee de zones correspondant aux balles
+class Group
+{
+ /// Classe segmentation
+ Segm *segm_;
+ /// Classe image
+ Img *img_;
+ /// Classe oconfig
+ OConfig *oconfig_;
+ /// liste chainee pour sauver les zones des balles
+ std::vector<Zone> zoneList_;
+ /// Ajoute une balle ou un poteau à la liste de groupes
+ void addZone (const int id, const int xmin, const int xmax, const int ymin, const int ymax);
+ /// Cherche l'objet complet a partir d'un pixel
+ void plague (const unsigned char numColor, const int x, const int y);
+
+ public:
+ /// Type d'objects à trouver
+ static const int nbZoneType = 5;
+ enum ZoneType {greenSkittle, redSkittle, border, base, gap, undefined};
+ /// Convertit le label de couleur en nombre
+ static std::string translateToColorName (const int color);
+ /// Constructeur
+ Group (Img *img, Segm *segm);
+ /// Selectionne les points a tester
+ void jumpPoints(const std::vector<ObjectColor> &colorList);
+ void jumpPoints(int color);
+ /// Affiche les zones trouvees
+ void showZones() const;
+ /// Accessors
+ std::vector<Zone> &getZoneList () {return zoneList_;}
+};
+
+
+#endif // group_h