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.cc66
1 files changed, 42 insertions, 24 deletions
diff --git a/2004/i/nono/src/ovision/comm.cc b/2004/i/nono/src/ovision/comm.cc
index 47e09fb..526b703 100644
--- a/2004/i/nono/src/ovision/comm.cc
+++ b/2004/i/nono/src/ovision/comm.cc
@@ -21,6 +21,9 @@ Comm::Comm(char *filename)
// Initialisation de IL
ilInit();
+ // Copie du nom de l'image courante
+ strcpy(fname, filename);
+
// Ecriture du PID dans un fichier
long pid = getpid();
FILE *file = fopen("adjust.PID", "w+");
@@ -41,22 +44,24 @@ Comm::Comm(char *filename)
pPoint[i*2] = oconfig->tabPoint[i][0];
pPoint[i*2+1] = oconfig->tabPoint[i][1];
}
-
+
// Ouverture de l'image pilote et stockage
- img.ReadRaw(filename);
+ img.LoadRGB(filename, 0, 360, 296);
+ //if (img.yuv) img.RGBtoYUV();
tex[0] = LoadImage(img.width, img.height, img.tabData, tex[0]);
-
+
// Conversion en YUV et stockage
- img.RGBtoYUV();
+ img.LoadRGB(filename, 0, 360, 296);
+ //if (!img.yuv) img.YUVtoRGB();
tex[3] = LoadImage(img.width, img.height, img.tabData, tex[3]);
-
+
// NN oconfigure en RGB ou YUV ?
- if (oconfig->colorMode == RGB) img.ReadRaw(filename);
+ //if (oconfig->colorMode == RGB) img.Load(filename, 0, 360, 296);
// 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, oconfig);
segm->BuildNN(oconfig->nn_NbCouleurs, LOAD_FROM_FILE);
@@ -142,7 +147,7 @@ Comm::ExecuteUiCmds(char *buffer)
{
case 'i': // ouverture du fifo
cout << "Initialisation du fifo\n";
- // Ouverture du fifo
+ // Ouverture du fifo
fifo = open("uicmds", O_RDWR);
if (!fifo) {
cerr << "InitComm : Error during opening FIFO" << endl;
@@ -170,10 +175,10 @@ Comm::ExecuteUiCmds(char *buffer)
// Changement des valeurs sur les poids du NN
for (int i=0; i<3; i++)
segm->node[numColor*3+i] = atoi(cut[COLORTOCHANGE+i]);
-
+
// On segmente l'image puis on la stocke
SegmAndGroup();
-
+
printf("Couleur %i changé aux valeurs : %u %u %u\n", numColor, segm->node[numColor*3], segm->node[numColor*3+1], segm->node[numColor*3+2]);
break;
@@ -199,7 +204,7 @@ Comm::ExecuteUiCmds(char *buffer)
// On segmente l'image puis on la stocke
SegmAndGroup();
-
+
cout << nbColorToMerge << " colors merged to " << numIndexColor << endl;
break;
@@ -207,11 +212,11 @@ Comm::ExecuteUiCmds(char *buffer)
case 's': // isole une couleur
int numColorToShow;
numColorToShow = atoi(cut[NUMCOLORTOSHOW]);
-
+
// Cas ou toutes les couleurs doivent etre affiche
if (numColorToShow == -1)
SegmAndGroup();
-
+
// Afficher seulement une couleur
else
{
@@ -247,12 +252,12 @@ Comm::ExecuteUiCmds(char *buffer)
}
oconfig->nn_NbCouleurs--;
-
+
// On refait le NN vu qu'il y a une couleur de moins
segm->BuildNN(oconfig->nn_NbCouleurs, LOAD_FROM_FILE);
-
+
segm->ShowNodes();
-
+
// On segmente l'image puis on la stocke
SegmAndGroup();
break;
@@ -260,10 +265,10 @@ Comm::ExecuteUiCmds(char *buffer)
case 'r': // Reload l'image
int nbNNOutput;
nbNNOutput = atoi(cut[NBNNOUTPUT]);
-
+
// Reattribution du nombre de sorties d'origine
if (nbNNOutput != -1) oconfig->nn_NbCouleurs = nbNNOutput;
-
+
// Recharge du fichier des poids
oconfig->LoadNNFile("rc/poids");
@@ -292,10 +297,13 @@ Comm::ExecuteUiCmds(char *buffer)
char *filename;
filename = cut[FILENAME];
cout << filename << endl;
+
+ // Copie du nom de l'image courante
+ strcpy(fname, filename);
// Ouverture de l'image pilote et stockage
- img.ReadRaw(filename);
-
+ img.LoadRGB(filename, 0, 360, 296);
+
// Allocation memoire pour les images
for (int i=0; i<2; i++)
{
@@ -304,13 +312,13 @@ Comm::ExecuteUiCmds(char *buffer)
}
tex[0] = LoadImage(img.width, img.height, img.tabData, tex[0]);
-
+
// Conversion en YUV et stockage
img.RGBtoYUV();
tex[3] = LoadImage(img.width, img.height, img.tabData, tex[3]);
// NN oconfigure en RGB ou YUV ?
- if (!oconfig->colorMode == RGB) img.ReadRaw(filename);
+ if (!oconfig->colorMode == RGB) img.LoadRGB(filename, 0, 360, 296);
SegmAndGroup();
@@ -329,7 +337,7 @@ Comm::ExecuteUiCmds(char *buffer)
SendNodes();
break;
-
+
case 'p': // Regenere les poids du reseau
int nbColor;
nbColor = atoi(cut[NBCOLORNN]);
@@ -361,7 +369,7 @@ Comm::ExecuteUiCmds(char *buffer)
cerr << "Comm::ExecuteUiCmds : Pas assez de points selectionnes\n";
return;
}
-
+
for (int i = 0; i<3; i++)
{
oconfig->tabPoint[i][0] = pPoint[i*2];
@@ -373,7 +381,17 @@ Comm::ExecuteUiCmds(char *buffer)
oconfig->CreateDistFile("rc/dist");
break;
+ case 'y':
+ img.yuv = !img.yuv;
+ // Conversion en YUV et stockage
+ img.ReadRaw(fname);
+ if (!img.yuv) img.YUVtoRGB();
+ tex[3] = LoadImage(img.width, img.height, img.tabData, tex[3]);
+
+ img.ReadRaw(fname);
+ break;
+
case 'z':
group->ShowZones();
break;