Bonjour bonjour,

Ca faisait longtemps que je ne vous avais pas embêté
Un de mes collègues a refondu complètement mon application, et je me retrouve avec des classes de partout !
Bon ça à la limite, je m'y fais. La où le problème survient, c'est lorsque je veux réutiliser mes bouts de codes.
En effet, je me heurte à une toute dernière erreur :
invalid use of member (did you forget the & ? )
Elle concerne ce bout de code, qui est dans la classe Visualization.cpp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
	g_signal_connect(G_OBJECT(scale), "value-changed",
			G_CALLBACK(OnScaleChange), NULL);
Qui je le précise, fonctionnait impeccablement auparavant.
Pour info la classe entière :

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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
 
 
#include "Visualization.h"
 
Visualization::Visualization(): m_image(){
	//Visualization window
	set_position(Gtk::WIN_POS_CENTER_ON_PARENT);
	set_default_size(300, 30);
	set_title("XX");
}
 
Visualization::~Visualization(){
 
}
 
bool Visualization::on_delete_event(GdkEventAny* event){
	std::cout << "visu closed" << std::endl;
	return false;
}
 
void Visualization::openImage(GtkWindow* window){
	GError *error = NULL;
		GtkWidget *imageWindow;
		GtkWidget *pImage;
		GtkWidget *dialog;
		GdkPixbuf *pixbuf;
 
		filename = NULL;
 
		/*Cration d'une image vide */
		pImage = gtk_image_new();
		dialog = gtk_file_chooser_dialog_new ("Open File",
						      window,
						      GTK_FILE_CHOOSER_ACTION_OPEN,
						      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
						      GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
						      NULL);
		if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
		  {
		    if(filename != NULL)
		    {
		    	g_free (filename);
		    }
		    	/* Creation de la fentre */
		        imageWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
		        /* Definition de la position */
		        gtk_window_set_position(GTK_WINDOW(imageWindow), GTK_WIN_POS_CENTER);
		        /* Definition de la taille de la fenetre */
		    	gtk_window_set_default_size(GTK_WINDOW(imageWindow), 500, 600);
		    	/* Titre de la fenetre */
		    	gtk_window_set_title(GTK_WINDOW(imageWindow), "XX");
		        /* Connexion du signal "destroy" */
		        g_signal_connect(G_OBJECT(imageWindow), "destroy", G_CALLBACK(gtk_widget_destroy), NULL);
 
		    	filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
		    	/* Chargement d'une image a partir d'un fichier */
 
		    	pixbuf = gdk_pixbuf_new_from_file(filename, &error);
		    	if(!error)
		    	{
		    		GdkPixbuf *pixbuf_mini = NULL;
		    		int w = gdk_pixbuf_get_width(pixbuf);
		    		int h = gdk_pixbuf_get_height(pixbuf);
 
		    		int width, height;
		    		gtk_window_get_default_size (GTK_WINDOW(imageWindow), &width, &height);
		    		double W = width * 0.7;
		    		double H = height;
 
		    		double coeff = 1;
 
		    		if (w > h) {
		    		coeff = W / w;
		    		}
		    		else {
		    		coeff = H / h;
		    		}
 
		    		W = w * coeff;
		    		H = h * coeff;
 
		    		pixbuf_mini = gdk_pixbuf_scale_simple(pixbuf, W, H, GDK_INTERP_NEAREST);
		    		gtk_image_set_from_pixbuf(GTK_IMAGE(pImage), pixbuf_mini);
		    		gtk_container_add(GTK_CONTAINER(imageWindow), pImage);
		    		gtk_widget_show_all (imageWindow);
		    	}
		    	else
		    	{
		    		g_critical(error->message);
		    	}
		  }
		gtk_widget_destroy (dialog);
}
 
void Visualization::binarize(){
	GtkWidget *scale;
	GtkWidget *threshWindow;
 
    binWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    /* Definition de la position */
    gtk_window_set_position(GTK_WINDOW(binWindow), GTK_WIN_POS_CENTER);
    /* Definition de la taille de la fenetre */
	gtk_window_set_default_size(GTK_WINDOW(binWindow), 500, 600);
	/* Titre de la fenetre */
	gtk_window_set_title(GTK_WINDOW(binWindow), "XX");
    /* Connexion du signal "destroy" */
    g_signal_connect(G_OBJECT(binWindow), "destroy", G_CALLBACK(gtk_widget_destroy), NULL);
 
	/* Creation de la fentre de paramtre */
    threshWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    /* Definition de la position */
    gtk_window_set_position(GTK_WINDOW(threshWindow), GTK_WIN_POS_CENTER);
    /* Definition de la taille de la fenetre */
	gtk_window_set_default_size(GTK_WINDOW(threshWindow), 180, 20);
	/* Titre de la fenetre */
	gtk_window_set_title(GTK_WINDOW(threshWindow), "Seuil");
    /* Connexion du signal "destroy" */
    g_signal_connect(G_OBJECT(threshWindow), "destroy", G_CALLBACK(gtk_widget_destroy), NULL);
 
	scale = gtk_hscale_new_with_range(0, 1, 0.1);
	gtk_container_add(GTK_CONTAINER(threshWindow), scale);
	g_signal_connect(G_OBJECT(scale), "value-changed",
			G_CALLBACK(OnScaleChange), NULL);
	gtk_widget_show_all (threshWindow);
}
 
void Visualization::onTest(){
 
}
 
void Visualization::OnScaleChange(GtkWidget* pWidget)
{
	double thresh;
	GtkWidget *pImage2;
 
    thresh = gtk_range_get_value(GTK_RANGE(pWidget));
 
//    fImageRGB *img = socv_system::ImageFile<float, 3>::loadJpg3(argv[1]);
//
//    fImageGray *grayImg = BasicTransform<float,3>::GrayScale(*img);
//
 
//    static socv_core::Image<T, 1>* computeBinarization(const socv_core::Image<T, 1> &imgIn, const T &thresh);
 
//    static socv_core::Image<T, 3>* mergeChannels(const socv_core::Image<T, 1>& r, const socv_core::Image<T, 1>& g, const socv_core::Image<T, 1>& b);
//    fImageFileGray:SaveJpg(*result, argv[2]);
 
 
    fImageRGB *img = socv_system::ImageFile<float, 3>::loadJpg3(filename);
    fImageGray *grayImg = BasicTransform<float,3>::GrayScale(*img);
 
    fImageGray* result = Binarization<float>::computeBinarization(*grayImg, thresh);
    fImageFileGray::saveJpg(*result, "images/result2.png");
	gtk_image_set_from_file(GTK_IMAGE(pImage2), "images/result2.png");
	gtk_widget_show_all (binWindow);
}
Merci d'avance à vous tous !