IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Lien avec OpenCV


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé Avatar de suzan_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 87
    Par défaut Lien avec OpenCV
    Bonjour,
    Je cherche à faire le lien entre OpenCV et GTK+ je voulais me servir de la fonction cvGetWindowHandle parcequ'il est dit dans la doc qu'elle renvoie GtkWidget in case of GTK+

    alors j'ai fais ça :
    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
    /* Variables */
        GtkWidget * MainWindow = NULL;
     
        /* Initialisation de GTK+ */
        gtk_init(&argc, &argv);
     
        /* Création de la fenêtre */
     
        MainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    	MainWindow = GTK_WIDGET(cvGetWindowHandle("parcours"));
        g_signal_connect(G_OBJECT(MainWindow), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
     
        /* Affichage et boucle évènementielle */
        gtk_widget_show(MainWindow);
        gtk_main();
    c'est ma fenêtre openCV dans laquelle tourne mon exécutable openCV.

    J'ai essayé sans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MainWindow = GTK_WIDGET(cvGetWindowHandle("parcours"));
    et evidemment ça marche...
    Le pire c'est qu'il me met pas d'erreur ni à la compilation mais seulement quand j'execute le programme et rien ne s'affiche dans la console. L'exécutable plante juste lamentablement....

    Est ce que quelqu'un aurait une piste??

    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Je n'ai pas trop compris ce que tu es essaies de faire... cvGetWindowHandle fonctionne ainsi : tu lui passes le nom d'une fenêtre, et il te renvoie un pointeur sur un GtkWidget.

    Sauf que là tu lui donnes un nom de fenêtre au pif. Le programme est censé deviner que tu penses appeler la fenêtre principale "parcours" ?

    Tu écrases ensuite le pointeur de la fenêtre que tu viens de créer avec GTK. Comme il ne trouve aucune fenêtre appelée "parcours", opencv renvoie NULL au mieux, et n'importe quoi au pire. Ensuite g_signal_connect échoue lamentablement parce que tu lui passes n'importe quoi.

  3. #3
    Membre confirmé Avatar de suzan_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 87
    Par défaut
    oui mais mais "parcours" ne viens pas de rien j'ai crée une fenetre opencv avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cvNamedWindow( "parcours",1);
    .Tu ferais comment ?

    parceque la fonction cvGetWindowHandle marche bien quand je l'utilise en api win32 . (dans la doc il mettait qu'elle retournait : HWND in case of Win32 and GtkWidget in case of GTK+)

    J'ai donc utilisé les fonctions de l'api window :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SetWindowPos((HWND)cvGetWindowHandle("CamShiftDemo"),(HWND)-1,0,0,480,640,SWP_NOMOVE);
    			SetForegroundWindow((HWND)cvGetWindowHandle("CamShiftDemo"));
     
    BringWindowToTop((HWND)cvGetWindowHandle("CamShiftDemo"));
    SwitchToThisWindow( (HWND)cvGetWindowHandle("CamShiftDemo"),FALSE);
    Aucune ne m'a fais ce que je voulais : à savoir : mon executable ouvre plusieurs fenetre et je ve mettre l'une d'elles (CamShiftDemo) au premier plan...J'ai juste réussi à la mettre prioritaire avec SetForegroundWindow du coup maintenant elle clignote en orange mais je dois toujours cliqué dessus pour l'afficher au premier plan...

    C'est pour ça si je pouvais me servir de GTK ça serait génial

  4. #4
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Forcément s'il manque la moitié du code...

    Je pense que cvGetWindowHandle peut deviner le type de ta fenêtre à laquelle il a affaire, et te renvoyer un handle si c'est une fenêtre Win32, et un pointeur GtkWidget si c'est une fenêtre GTK.

    Mais si tu l'as créée avec opencv, c'est une fenêtre Win32, et tu ne peux plus rien y faire. Opencv peut juste te donner le bon objet pour manipuler ta fenêtre, mais pas convertir type de fenêtre en un autre, ce n'est pas son boulot.

    Si tu veux récupérer un GtkWidget en appelant cvGetWindowHandle, il faut que la fenêtre recherchée ait été créée par GTK, il n'y a pas d'autre moyen.

Discussions similaires

  1. Problème d'édition des liens avec OpenCV
    Par benyaya_benyaya dans le forum Débuter
    Réponses: 1
    Dernier message: 16/05/2013, 12h17
  2. Édition des liens avec OpenCV
    Par Yassine_ba dans le forum Qt Creator
    Réponses: 5
    Dernier message: 31/07/2012, 17h22
  3. [Visual Studio] Qt avec OpenCV : édition des liens
    Par alainstgt dans le forum EDI
    Réponses: 2
    Dernier message: 14/03/2012, 13h17
  4. Réponses: 3
    Dernier message: 04/07/2007, 14h08
  5. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo