Bonjour, je me permet de reposter un message que j'avais déjà mis dans la section GTK+/GTKmm. Mais au cours de plusieurs tests, je me suis dis que ça venait peut-être bien d'OpenCV et non pas de GTK.

Je m'explique. J'avais fait un test (avant de me lancer dans mon projet) avec une simple fenêtre affichant en continue l'image de la webcam. Jusque là, aucun problème (j'ai trouvé un algo qui fait la conversion Ipl vers GTK, les flux est constant, tout marche nickel).
Dans mon projet, la fenêtre contient en plus une scalebar (une barre avec un curseur qui permet de sélectionner une valeur), et deux boutons (un annuler et un valider).
Et là, j'ai de gros problèmes...
  1. A la création de la fenêtre, l'image s'initialise mal, je suis obligé de l'actualiser une seconde fois pour qu'elle apparaisse normalement.
  2. L'image ne se met à jour que tous les 4 appels à la fonction de mise à jour (que ce soit l'ipl ou l'image GTK)
  3. Lorsque l'image s'actualise, ce n'est l'image courante, mais l'image stockée au précédent appel à la fonction de mise à jour qui est affichée.


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.

Si vous voulez voir mon ancien post (qui ne contient pas de réponses), voici le lien.

Merci d'avance, Alexis.