summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/ovision/comm.cc
diff options
context:
space:
mode:
Diffstat (limited to '2004/i/nono/src/ovision/comm.cc')
-rw-r--r--2004/i/nono/src/ovision/comm.cc54
1 files changed, 29 insertions, 25 deletions
diff --git a/2004/i/nono/src/ovision/comm.cc b/2004/i/nono/src/ovision/comm.cc
index 8b0199e..6c98771 100644
--- a/2004/i/nono/src/ovision/comm.cc
+++ b/2004/i/nono/src/ovision/comm.cc
@@ -12,7 +12,7 @@ using namespace std;
#include "comm.h"
#include "adjust.h"
-
+#include <IL/il.h>
/// Constructeur
/// @param *filename nom de l'image a utiliser
@@ -32,27 +32,27 @@ Comm::Comm(char *filename)
fprintf(file, "%li\n", pid);
fclose(file);
- // Creation de config
- config = new OConfig("vision.conf");
+ // Creation de oconfig
+ oconfig = new OConfig("rc/vision.conf");
// Ouverture de l'image pilote et stockage
img.ReadRaw(filename);
tex[0] = LoadImage(img.width, img.height, img.tabData, tex[0]);
- // Conversion en RGB et stockage
+ // Conversion en YUV et stockage
img.RGBtoYUV();
tex[3] = LoadImage(img.width, img.height, img.tabData, tex[3]);
- // NN configure en RGB ou YUV ?
- if (config->colorMode == RGB) img.ReadRaw(filename);
+ // NN oconfigure en RGB ou YUV ?
+ if (oconfig->colorMode == RGB) img.ReadRaw(filename);
// Allocation memoire pour les images
for (int i=0; i<2; i++)
data[i] = new unsigned char[img.nbPixels*3];
// Initialisation de la segmentation
- segm = new SegmNN(&img, config);
- segm->BuildNN(config->nn_NbCouleurs, LOAD_FROM_FILE);
+ segm = new SegmNN(&img, oconfig);
+ segm->BuildNN(oconfig->nn_NbCouleurs, LOAD_FROM_FILE);
group = new Group(&img, segm);
SegmAndGroup();
@@ -70,7 +70,7 @@ Comm::~Comm()
ilShutDown();
// Liberation de la memoire
- delete config;
+ delete oconfig;
delete segm;
delete group;
delete [] data;
@@ -91,7 +91,7 @@ Comm::SegmAndGroup()
// Creation des groupes
if (group) delete group;
group = new Group(&img, segm);
- group->JumpPoints(config->groupColor);
+ group->JumpPoints(oconfig->groupColor);
group->TabOut();
img.DoImg(group->tabOut, data[1]);
@@ -106,7 +106,7 @@ void
Comm::SendNodes()
{
char buf[10];
- for (int i=0; i < config->nn_NbCouleurs*3; i++)
+ for (int i=0; i < oconfig->nn_NbCouleurs*3; i++)
{
sprintf(buf, "%u\n", segm->node[i]);
write(fifo, buf, 10);
@@ -176,7 +176,7 @@ Comm::ExecuteUiCmds(char *buffer)
// Si on recoit une commande de remise a zero de l'index
if (atoi(cut[NBCOLORTOMERGE]) == -1)
{
- for (int i=0; i<config->nn_NbCouleurs; i++)
+ for (int i=0; i<oconfig->nn_NbCouleurs; i++)
segm->index[i] = i;
}
// Sinon on mix les couleurs
@@ -215,7 +215,7 @@ Comm::ExecuteUiCmds(char *buffer)
// Creation des groupes
group = new Group(&img, segm);
- group->JumpPoints(config->groupColor);
+ group->JumpPoints(oconfig->groupColor);
group->TabOut();
img.DoImg(group->tabOut, data[1]);
@@ -232,17 +232,17 @@ Comm::ExecuteUiCmds(char *buffer)
// Decalage de toutes les couleurs pour supprimer une couleur
unsigned char *pCur;
- pCur = &config->node[numColorToDel*3];
- for(int i=numColorToDel*3; i<config->nn_NbCouleurs*3; i++)
+ pCur = &oconfig->node[numColorToDel*3];
+ for(int i=numColorToDel*3; i<oconfig->nn_NbCouleurs*3; i++)
{
*(pCur) = *(pCur+3);
pCur++;
}
- config->nn_NbCouleurs--;
+ oconfig->nn_NbCouleurs--;
// On refait le NN vu qu'il y a une couleur de moins
- segm->BuildNN(config->nn_NbCouleurs, LOAD_FROM_FILE);
+ segm->BuildNN(oconfig->nn_NbCouleurs, LOAD_FROM_FILE);
segm->ShowNodes();
@@ -255,13 +255,13 @@ Comm::ExecuteUiCmds(char *buffer)
nbNNOutput = atoi(cut[NBNNOUTPUT]);
// Reattribution du nombre de sorties d'origine
- if (nbNNOutput != -1) config->nn_NbCouleurs = nbNNOutput;
+ if (nbNNOutput != -1) oconfig->nn_NbCouleurs = nbNNOutput;
// Recharge du fichier des poids
- config->LoadNNFile();
+ oconfig->LoadNNFile("rc/poids");
// On refait le NN vu qu'il y a une couleur de moins
- segm->BuildNN(config->nn_NbCouleurs, LOAD_FROM_FILE);
+ segm->BuildNN(oconfig->nn_NbCouleurs, LOAD_FROM_FILE);
// On segmente l'image puis on la stocke
SegmAndGroup();
@@ -275,7 +275,7 @@ Comm::ExecuteUiCmds(char *buffer)
break;
case 'g': // Selection du groupe
- config->groupColor = atoi(cut[NUMGROUP]);
+ oconfig->groupColor = atoi(cut[NUMGROUP]);
// On segmente l'image puis on la stocke
SegmAndGroup();
@@ -302,8 +302,8 @@ Comm::ExecuteUiCmds(char *buffer)
img.RGBtoYUV();
tex[3] = LoadImage(img.width, img.height, img.tabData, tex[3]);
- // NN configure en RGB ou YUV ?
- if (!config->colorMode == RGB) img.ReadRaw(filename);
+ // NN oconfigure en RGB ou YUV ?
+ if (!oconfig->colorMode == RGB) img.ReadRaw(filename);
SegmAndGroup();
@@ -328,10 +328,10 @@ Comm::ExecuteUiCmds(char *buffer)
nbColor = atoi(cut[NBCOLORNN]);
// Assignation du nombre de couleurs a isoler par le reseau
- config->nn_NbCouleurs = nbColor;
+ oconfig->nn_NbCouleurs = nbColor;
// Genere aleatoire les poids
- segm->BuildNN(config->nn_NbCouleurs, GENERATE);
+ segm->BuildNN(oconfig->nn_NbCouleurs, GENERATE);
// Apprentissage
segm->TrainNN();
@@ -343,6 +343,10 @@ Comm::ExecuteUiCmds(char *buffer)
SendNodes();
break;
+
+ case 'z':
+ group->ShowZones();
+ break;
}
DrawGLScene();