Bonjour à tous,

Alors voilà, je fais du traitement d'images en c++, et j'ai besoin de chronométrer le temps, afin de stopper le programme si la détection n'a pas abouti.

A chaque chargement d'une image à traiter, j'appelle cette première fonction d'initialisation pour récupérer le temps de départ t_start :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
// square_detect.h
 
int t_start, t_type_start;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
square_detect.cpp
 
// Initialisation: 
 void  square_detect:: init_detection()
 {
     t_start = clock();  
     cout << "CLOCK_START = " << t_start << "\n"; // affiche 136 922
     cout << "CLOCKS_PER_SEC = " << CLOCKS_PER_SEC << "\n"; // affiche 1000
 
 }
Avec les 10 premières images, ça marche, et lorsque j'atteins une certaine image (la 15eme), le compteur t_start se remet à 0 entre l'initialisation et ce bout de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
if((int)((clock()-t_start)/CLOCKS_PER_SEC) > 60)
{
     cout << "TEMPS ECOULE 1\n";
     cout << "CLOCK = " << (int)clock() << "\n"; // 138 212
     cout << "CLOCK_START = " << t_start << "\n"; // AFFICHE 0 (POURQUOI ???, je ne l'ai pas réinitialisé !!!)
     cout << "CLOCK - CLOCK_START= " << (int)(clock()-t_start) << "\n"; //  affiche 138 216 
     cout << "TEMPS = " << (int)((clock()-t_start)/CLOCKS_PER_SEC) << " secondes\n"; // affiche 138  secondes
     goto STOP; // du coup mon programme s'arrête au bout de 2 secondes !
}
J'ai placé un cout << "CLOCK_START = " << t_start << "\n"; à divers endroits du programme, et il affiche 0 très rapidement !! Pourtant je ne l'initialise qu'au début avec clock() et ensuite je n'y touche plus !! Conflit d'adresses vous pensez ??

Je suis donc formel : J'AI UNE VARIABLE QUI SE REMET A ZERO TOUTE SEULE !!!!!