Bonjour,

Mon problème est comment créer un procédure ou un fonction si j'utilise mfc application.
Ma fenêtre contient deux slider et une partie pour afficher une image. (Mon programme est fais le fonction de binarisation). Le premier slider pour seuil de binarisation et le deuxième pour dit que la fonction de binarisation est inverse ou non. J’ai un procédure qui a pour but de fonction de callback va être appelée chaque fois qu'une TrackBall sera modifiée.
Dans cette fonction, on a juste à :

-déterminer l'algorithme de seuillage à utiliser (en fonction de la valeur de la variable inverser) ;
-effectuer le seuillage avec le seuil ;
-rafraîchir l'affichage de l'image binarisée.
En gros, ça va nous donner :

Code : C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
void seuillage(int valeur){
int traitement;
 
if(inverser==0)traitement=CV_THRESH_BINARY;
else traitement=CV_THRESH_BINARY_INV;
 
cvThreshold(img_nvg, img_bin, seuil, 255, traitement);
cvShowImage("Binarisation", img_bin);
}
et j'ai une fonction main
Code : C++
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
 
int main()
{
//Initialisations
img=cvLoadImage("/home/arnaud/Images/lena.jpg");
img_nvg=cvCreateImage(cvGetSize(img), img->depth, 1);
img_bin=cvCloneImage(img_nvg);
 
//Contrôle de l'origine
inverser=0;
 
int flip=0;
if(img->origin!=IPL_ORIGIN_TL){
flip=CV_CVTIMG_FLIP;
}
cvConvertImage(img, img_nvg, flip);
 
 
cvNamedWindow("Originale", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Binarisation", CV_WINDOW_AUTOSIZE);
 
cvShowImage("Originale", img);
 
//Première binarisation
seuil=127;
cvThreshold(img_nvg, img_bin, seuil, 255, CV_THRESH_BINARY);
 
//Affichage du résultat
cvShowImage("Binarisation", img_bin);
 
 
//Création des trackbars
cvCreateTrackbar( "Seuil de binarisation ", "Binarisation", &seuil , 255 , seuillage );
cvCreateTrackbar( "Inverser (0 = non, 1 = oui)", "Binarisation", &inverser, 1, seuillage );
 
 
cvWaitKey(0);
 
return 0;
}
merci