From dacb6c13a9b34afa69708c3dd741acc2bae92ffd Mon Sep 17 00:00:00 2001 From: gaillaro Date: Sat, 25 Jun 2005 14:39:10 +0000 Subject: lecture de la couleur dans poids --- 2005/i/robert/src/ovision/see/ovision.cc | 63 +++++++++++++++++++++----------- 2005/i/robert/src/ovision/see/ovision.hh | 1 + 2 files changed, 43 insertions(+), 21 deletions(-) (limited to '2005/i/robert') diff --git a/2005/i/robert/src/ovision/see/ovision.cc b/2005/i/robert/src/ovision/see/ovision.cc index c66d64a..734a789 100644 --- a/2005/i/robert/src/ovision/see/ovision.cc +++ b/2005/i/robert/src/ovision/see/ovision.cc @@ -1,5 +1,7 @@ #include "ovision.hh" #include +#include +#include /// Constructeur OVision::OVision (bool useSocket) @@ -23,36 +25,55 @@ OVision::~OVision () delete colorTab_; } -/// Iniialisatoin de toutes les classes -void -OVision::init (const Group::ZoneType aim) +void +OVision::readColorSkittle (ObjectColor &o) { - aim_ = aim; - oconfig_ = new OConfig; - // Initialisation des classes - if (aim == Group::redSkittle) + if (aim_ == Group::redSkittle) { colorTab_ = new ColorTable ("../runtime/rc/colortableRed.z"); - oconfig_->nnInfluLum = 0.4; - oconfig_->groupColor.clear (); - ObjectColor tmp; - tmp.label = "redSkittle"; - tmp.color = 3; - tmp.type = aim; - oconfig_->groupColor.push_back (tmp); + o.label = "redSkittle"; } else { colorTab_ = new ColorTable ("../runtime/rc/colortableGreen.z"); - oconfig_->nnInfluLum = 0.4; - ObjectColor tmp; - oconfig_->groupColor.clear (); - tmp.label = "greenSkittle"; - tmp.color = 0; - tmp.type = aim; - oconfig_->groupColor.push_back (tmp); + o.label = "greenSkittle"; + std::cout << " color " << o.label << "\n"; } + o.type = aim_; + // reading color value + std::ifstream file ("../runtime/rc/poids"); + if (!file.is_open ()) + throw std::string (" file poids not found\n"); + o.color = -1; + static const int bufferSize = 50; + char buffer[bufferSize]; + while (!file.eof ()) + { + file.getline (buffer, bufferSize); + std::string line (buffer); + if (line.find (o.label) != std::string::npos) + { + std::istringstream ss (line); + ss >> line; + ss >> o.color; + break; + } + } + if (o.color == -1) + throw std::string (" error in file poids\n"); + oconfig_->groupColor.clear (); + oconfig_->groupColor.push_back (o); +} +/// Iniialisatoin de toutes les classes +void +OVision::init (const Group::ZoneType aim) +{ + aim_ = aim; + oconfig_ = new OConfig; + // Initialisation des classes + ObjectColor tmp; + readColorSkittle (tmp); img_ = new Img; // Initialisation caméra v4l_ = new Video4Linux ("/dev/video", oconfig_->width, oconfig_->height, diff --git a/2005/i/robert/src/ovision/see/ovision.hh b/2005/i/robert/src/ovision/see/ovision.hh index 28ba4c3..6d3b892 100644 --- a/2005/i/robert/src/ovision/see/ovision.hh +++ b/2005/i/robert/src/ovision/see/ovision.hh @@ -74,6 +74,7 @@ class OVision /// Renvoie la position de la quille dans le référentiel robot /// Donne l'angle du robot par rapport à la balle + distance void getLoc (Zone &zone, int &x, int &y, int &angle, int &dist); + void readColorSkittle (ObjectColor &o); }; #endif // ovision_h -- cgit v1.2.3