Bonjour, pour mon premier post, je commence avec un problème assez corsé (du moins je pense car jusque là, personne n'a trouvé la solution).

Je vous explique, je suis sur un projet en C++ et j'ai besoin de récupérer une image depuis la webcam (j'utilise OpenCV avec une implémentation en C) et de l'afficher dans une fenêtre (j'utilise Gtkmm). Pour ce qui est de la transformation d'une iplImage vers une GtkImage, j'ai trouvé un algorithme qui marche sans problème.
Mais le problème arrive à l'ouverture de fenêtre.

Premièrement, la première image affichée est illisible (noire ou totalement parasitée) et pourtant, un deuxième appel à la fonction MaJ() me donne une image correcte. Pourquoi suis-je obligé de l'appelée 2 fois?

Ensuite, j'ai fait un bouton qui est sensé rafraichir l'image et lorsque je clique dessus, rien ne se passe, mais au second appuie, l'image change, et après ça me fait pareil mais une fois sur 4 (j'appuie 3 fois, ça fait rien et la 4ème fois l'image se met à jour).

Enfin, dernier détail, au 4ème appui sur le bouton, je n'affiche pas l'image qui est devant la caméra, mais celle qui était devant la caméra au moment du 3ème clic sur le bouton.

Je vous donne ici le code du constructeur de ma fenêtre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Ipl2Gtk::Ipl2Gtk(int nocam)
{
	cam = cvCreateCameraCapture(nocam);
	if (cam==NULL) {
		time_t date;
		time(&date);
		Files::Get().get_ferr() << ctime(&date) << "    Erreur d'initialisation de la camera" << std::endl;
		Gtk::MessageDialog msg("Erreur d'initialisation de la camera", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE, true);
		Gtk::Main::run(msg);
		abort();
	}
	gtkimg = new Gtk::Image();
	MaJ();
}
Et le code de ma fonction MaJ() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
bool Ipl2Gtk::MaJ() {
	grabIpl();
	Ipl2Gtk::ToGtk(ipl, gtkimg);
	time_t date;
	time(&date);
	std::cout <<  ctime(&date) << " Nouvelle image" << std::endl;
	return true;
}
Les dernières lignes me permettaient de vérifier que la fonction était bien appelée à chaque fois, ce qui est le cas, et pourtant l'image n'est pas rafraîchit à chaque fois.

Voilà pour le problème, j'espère avoir été assez clair, n'hésitez pas à me demander d'autres infos.
Merci d'avance, Alexis.