summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/ovision/ovision.cc
diff options
context:
space:
mode:
Diffstat (limited to '2004/i/nono/src/ovision/ovision.cc')
-rw-r--r--2004/i/nono/src/ovision/ovision.cc104
1 files changed, 104 insertions, 0 deletions
diff --git a/2004/i/nono/src/ovision/ovision.cc b/2004/i/nono/src/ovision/ovision.cc
new file mode 100644
index 0000000..db97857
--- /dev/null
+++ b/2004/i/nono/src/ovision/ovision.cc
@@ -0,0 +1,104 @@
+#include "ovision.h"
+#include <iostream>
+
+/// Constructeur
+OVision::OVision ()
+{
+ // Initialisation des classes
+ oconfig = new OConfig;
+ img = new Img;
+
+ // Initialisation caméra
+ Video4Linux::ColorSpace cs;
+ cs = Video4Linux::rgb;
+ v4l = new Video4Linux ("/dev/video", cs, 60000);
+ v4l->calibrate ();
+
+ // Prendre une image pour que la taille de l'image soit configuré
+ img->load (*v4l);
+
+ segm = new SegmTable (img);
+ group = new Group (img, segm);
+ map = new Map (space);
+
+ // Construction du réseau de neurones
+ segm->BuildNN (oconfig->nn_NbCouleurs, LOAD_FROM_FILE);
+
+ // Ouverture ou création de la table de couleur
+ if (!segm->LoadColorTableFile ())
+ segm->DoColorTable ();
+
+ step = 0;
+}
+
+/// Destructeur
+OVision::~OVision ()
+{
+ delete oconfig;
+ delete img;
+ delete segm;
+ delete group;
+ delete map;
+}
+
+/// Prends une image avec la caméra
+void
+OVision::TakeShoot ()
+{
+ // Prends une image
+ img->load(*v4l);
+}
+
+
+/// Analyse une image
+void
+OVision::Update ()
+{
+ // Compteur du nombre d'image traité
+ step++;
+
+ // Cherche les balles
+ group->JumpPoints(oconfig->groupColor);
+
+ // Parcours la liste de balles trouvées
+ if (group->zoneListBall)
+ {
+ int x,y;
+ x = group->zoneListBall->centerx;
+ y = img->height - group->zoneListBall->centery;
+ space->GetLoc(x, y, x, y);
+ }
+
+ // Mets à jour la map
+ map->AddBallsToMap (group);
+
+ double balX, balY;
+ if (map->GetCurBallPos (balX, balY))
+ std::cout << "Balle Courante: " << balX << " " << balY << std::endl;
+
+
+ if (map->IsTree ())
+ {
+ double treeX, treeY;
+ map->GetTreePos (treeX, treeY);
+ std::cout << "Tree: " << treeX << " " << treeY << std::endl;
+ }
+}
+
+/// Affiche d'info sur l'update
+void
+OVision::ShowInfo ()
+{
+ std::cout << "-----------------------------------------------------------------" << std::endl;
+ std::cout << "image n°" << step << std::endl;
+
+ // Info sur les zones trouvées
+ group->ShowZones();
+ std::cout << "-------------\n" << std::endl;
+
+
+ std::cout << "-------------\n" << std::endl;
+ std::cout << "Map:\n" << std::endl;
+ // Info sur les balles trouvées
+ map->ShowBalls ();
+}