summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ovision/ui/live.cc
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert/src/ovision/ui/live.cc')
-rw-r--r--2005/i/robert/src/ovision/ui/live.cc36
1 files changed, 28 insertions, 8 deletions
diff --git a/2005/i/robert/src/ovision/ui/live.cc b/2005/i/robert/src/ovision/ui/live.cc
index 60918ac..2484f32 100644
--- a/2005/i/robert/src/ovision/ui/live.cc
+++ b/2005/i/robert/src/ovision/ui/live.cc
@@ -16,12 +16,14 @@
#include "image/raw_reader.hh"
#include "data/data_input_file.hh"
#include "video4linux/video4linux.hh"
+#include "socket/server_socket.hh"
+#include "socket/address.hh"
/// Constructeur
/// @param *filename nom de l'image a utiliser
Live::Live (const unsigned nbImg, const ImageInput imgInput)
- : colorToFind_ (-1), group (0), width_ (640), height_ (480),
- imgInput_ (imgInput)
+ : reader_ (0), db_ (0), st_ (0), colorToFind_ (-1), group (0),
+ width_ (640), height_ (480), imgInput_ (imgInput)
{
if (nbImg < 6) nbImg_ = 6;
else nbImg_ = nbImg;
@@ -62,6 +64,21 @@ Live::init (const Image::PixelFormat pf, const char *filename)
}
break;
case socket:
+ {
+ // Serveur
+ ServerSocket ss (2000);
+ Address a;
+ SocketText *st_ = new SocketText (ss, a);
+ st_->nonblock ();
+ // DataBuffer de reception
+ DataBuffer *db_ = new DataBuffer;
+ // Reception des données
+ while (!st_->recv ());
+ *st_ >> *db_;
+ if (db_->type () != DataBuffer::Image)
+ std::cerr << "<Live::init> Echec de la transmission\n";
+ reader_ = new RawReader (*db_, width_, height_, pf);
+ }
break;
}
img->load (*reader_);
@@ -74,7 +91,9 @@ Live::init (const Image::PixelFormat pf, const char *filename)
segm = new SegmLearn;
segm->setMode (pf);
segm->buildNN (oconfig->nnNbColor, Segm::loadFromFile);
- mag = new Magnifier (img, segm, Group::ZoneType (oconfig->uiGroupToDisplay));
+ eraser = new Eraser (oconfig->width, 10);
+ eraser->init ();
+ mag = new Magnifier (img, segm, eraser, Group::ZoneType (oconfig->uiGroupToDisplay));
segmAndGroup ();
// Affichage de l'image pilote avec la couleur d'aquisition et en RGB
tex[1] = loadImage (img->width_, img->height_, data[0], tex[1]);
@@ -101,9 +120,7 @@ Live::updateImg (const Image::PixelFormat pf, const char *filename)
}
break;
case cam:
- {
std::cout << "<Live::updateImg> Changement d'image caméra" << std::endl;
- }
case socket:
break;
}
@@ -133,6 +150,9 @@ Live::~Live()
delete segm;
delete group;
delete [] data;
+ delete db_;
+ delete st_;
+ delete reader_;
}
/// Recharge le fichier de config
@@ -150,7 +170,7 @@ Live::segmAndGroup (const int numColorToShow)
// Création des groupes
delete group;
- group = new Group (img, segm);
+ group = new Group (img, segm, eraser);
std::vector<Zone> list;
if (numColorToShow >= 0)
{
@@ -179,6 +199,6 @@ Live::segmAndGroup (const int numColorToShow)
// Création de l'image segmentée
img->doImg ();
memcpy (data[2], img->getTabOut (), sizeof (char)*img->nbPixels_*3);
- tex[2] = loadImage(img->width_, img->height_, data[2], tex[2]);
- tex[5] = loadImage(img->width_, img->height_, data[5], tex[5]);
+// tex[2] = loadImage(img->width_, img->height_, data[2], tex[2]);
+// tex[5] = loadImage(img->width_, img->height_, data[5], tex[5]);
}