// 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 #include #include "img.hh" #include "segm.hh" #include "oconfig.hh" #include "hpoint.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; /// aire de la zone int area; /// l'objet est vue partiellement ou completement bool partial; /// l'objet est situé en bas de l'image bool bottom; /// couleur de la zone int color; }; /// 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 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 = 6; enum ZoneType {greenSkittle, redSkittle, border, base, gap, reflectBand, 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 &colorList); void jumpPoints(int color); /// Affiche les zones trouvees void showZones() const; /// Accessors std::vector &getZoneList () {return zoneList_;} }; #endif // group_h