Bonjour,

Je me permets de vous exposer mon problème que je ne parviens pas à résoudre. Dans une partie de ma chaine de traitements, j'aimerais extraire la valeur d'un pixel dans une image (une classification en l'occurrence) dont les coordonnées (numéro de ligne et de colonne) sont présentes dans le fichier texte « point_ctrl.txt ». Cette valeur de pixel doit être ensuite enregistrée dans un autre fichier texte « numero_classe_eau.txt ».
Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
 
#include <stdio.h>
#include <stdlib.h>
 
#define LARGEUR 5058 // Largeur à modifier en fonction de l'image d'entrée
#define HAUTEUR 7112 // Hauteur à modifier en fonction de l'image d'entrée
 
//--------------------------------------------------
// Déclaration des variables
//--------------------------------------------------
unsigned char image[LARGEUR][HAUTEUR];			// la matrice de l'image originale
char nomFichier[] = "Image\\KmeansSTEP2withMask_output.tif "; 	// nom du fichier image à lire
 
FILE* fichier;									// la variable fichier	
int pixel;					           			// variable tampon
int x, y;										// variables d'itération  --> y-x : Hauteur-Largeur
int colonne, ligne ; 
unsigned char class ;
 
/*********************************Fonctions***********************************/ 
int Recuperation_pt_ctrl()
{
 
 
  FILE *Hfile ;
 
  if((Hfile=fopen("point_ctrl.txt", "r"))==NULL)
  {
    fprintf(stderr, "Erreur d'ouverture du fichier .txt\n") ;
    return EXIT_FAILURE ;
  }
 
 
  while(!feof(Hfile)) // feof (END OF FILE) indique la fin du fichier (marquage automatique lors ouverture) 
  {
    if((fscanf(Hfile, "colonne=%d\n", &colonne))==1)
    {
    }
    else if((fscanf(Hfile, "ligne=%d\n", &ligne))==1)
    {
    }
 
  }
 
  fclose(Hfile) ;
 
  return 0;
}
 
int Selection_class_hydro()
{
	//--------------------------------------------------
	// Lecture du ou des fichier(s)
	//--------------------------------------------------
	// Image 1 (la plus couramment utilisée)
	fichier = fopen( nomFichier, "rb" );	// ouverture du fichier en lecture binaire (rb) 
 
	if( fichier==0 )
	{	// Erreur d'ouverture
		printf( "Desole, mais le fichier est introuvable ! Le programme va s'arreter..." );
		return 1;
	}
	printf( ">> Lecture de l'image \"%s\" [", nomFichier );
 
	for( y=0; y<HAUTEUR; y++ )
	{	// lecture sur l'axe Y
		for( x=0; x<LARGEUR; x++ )
		{	// lecture sur l'axe X (=lecture d'une ligne)
			image[x][y] = fgetc(fichier);
		}
	}
 
	fclose(fichier);	// fermeture du fichier
	printf( "]\n>> Lecture de l'image terminee !\n" );
 
	//--------------------------------------------------
	// Selection de la classe
	//--------------------------------------------------	
 
	class = image[colonne][ligne] ;
	printf( "%d -" , class);
 
	return 0;
 
}
 
int Export_classe ()
{
	FILE * pFile;
 
	pFile = fopen ("numero_classe_eau.txt","w");
	fprintf (pFile, "%d \n",class);
	printf ("Export du numéro de classe dans le fichier texte terminee ");
 
	fclose (pFile);
 
	return 0;
}
 
 
 
/***********************************MAIN*************************************/
 
int main(int argc, char *argv[])
{
 
 
	Recuperation_pt_ctrl(colonne, ligne) ;
	printf("################### \n") ;
	printf("%d \n", colonne) ; 
	printf("%d\n", ligne) ;
	printf("################### \n") ;
 
	Selection_class_hydro(class);
	printf("\n ################### \n") ;
	Export_classe ();
//	printf("%d\n", class) ;
 
	return EXIT_SUCCESS ;
 
 
}
Ce dernier permet de récupérer les coordonnées du fichier .txt et de les affecter aux variables "ligne" et "colonne" néanmoins il retourne toujours une valeur de pixel incorrecte. Je ne comprends pas pourquoi.
L’écriture de cette valeur dans le fichier « numero_classe_eau.txt » s'effectue quant à elle correctement.
Pouvez-vous m'aider à y voir plus clair au sujet de l'extraction de la valeur du pixel ?

Je vous remercie par avance pour vos informations.

Azgard