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 :

gtkmm2 + glade3 + gtkbuilder : comment démarrer ?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut gtkmm2 + glade3 + gtkbuilder : comment démarrer ?
    Bien le bonjour,

    Je cherche à développer une IHM gtk+ pour une appli déjà bien avancée, selon les paramètres suivants:
    langage c++ -> gtkmm
    utilisation de la version 2 par d'autres librairies -> gtkm2
    construction graphique sous glade3 -> gtkbuilder
    Utilisation directe du fichier Xml généré par glade sans traduction en C++

    A noter, je ne maitrise pas le C++, disons plutôt que je perfectionne un peu plus tous les jours ...

    J'aimerai démarrer en m'appuyant sur un exemple, me permettant de démarrer enfin, je n'arrive pas à adapter un code que j'ai pour gtkmm3
    Idéalement, import d'un fichier .glade, affichage de l'interface, accés aux membres et méthodes, gestion des signaux vers mes fonctions ....

    je cherche encore et toujours, mais ne trouve pas de source qui convienne.

    Avez-vous un lien / tuto / source à m'indiquer?

    Merci

  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
    Points : 2 002
    Points
    2 002
    Par défaut
    Bonjour niconol,

    tu as une dépendance forte à gtk 2 ? Dans ta question précédente tu avais une incompatibilité, tu as trouvé quelle bibliothèque dépendait de GTK 2 ?
    Parce que commencer un projet en utilisant une vieille version de GTK (ou de n'importe quelle bibliothèque d'ailleurs), ce n'est jamais trop une bone idée. Tu te coupes automatiquement d'une partie du support, des corrections de bugs, et tu apprends des choses déjà obsolètes...

    Tu n'as pas réussi à adpater les exemples en C++ de https://developer.gnome.org/gnome-de...le/cpp.html.fr ?

    Pour ce qui est de glade, je crois qu'il faut une version spécifique pour faire du GTK 2. À partir d'une version donnée, il s'est mis à faire du GTK 3 uniquement.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    j'estime avoir une dépendance forte dans la mesure ou plusieurs bibliothèques d'opencv dépendent de gtk2, à l'image de :

    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
    ldd /usr/lib/arm-linux-gnueabihf/libopencv_calib3d.so
    	linux-vdso.so.1 (0x7efaa000)
    	/usr/lib/arm-linux-gnueabihf/libarmmem.so (0x76f12000)
    	libopencv_core.so.2.4 => /usr/lib/arm-linux-gnueabihf/libopencv_core.so.2.4 (0x76ce0000)
    	libopencv_flann.so.2.4 => /usr/lib/arm-linux-gnueabihf/libopencv_flann.so.2.4 (0x76c75000)
    	libopencv_imgproc.so.2.4 => /usr/lib/arm-linux-gnueabihf/libopencv_imgproc.so.2.4 (0x76a27000)
    	libopencv_highgui.so.2.4 => /usr/lib/arm-linux-gnueabihf/libopencv_highgui.so.2.4 (0x769d6000)
    	libopencv_features2d.so.2.4 => /usr/lib/arm-linux-gnueabihf/libopencv_features2d.so.2.4 (0x76934000)
    	libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76920000)
    	libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x768f8000)
    	librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x768e1000)
    	libGLU.so.1 => /usr/lib/arm-linux-gnueabihf/libGLU.so.1 (0x76883000)
    	libGL.so.1 => /usr/lib/arm-linux-gnueabihf/libGL.so.1 (0x7680c000)
    	libSM.so.6 => /usr/lib/arm-linux-gnueabihf/libSM.so.6 (0x767fc000)
    	libICE.so.6 => /usr/lib/arm-linux-gnueabihf/libICE.so.6 (0x767de000)
    	libX11.so.6 => /usr/lib/arm-linux-gnueabihf/libX11.so.6 (0x766c8000)
    	libXext.so.6 => /usr/lib/arm-linux-gnueabihf/libXext.so.6 (0x766a9000)
    	libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x765cd000)
    	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76551000)
    	libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x76524000)
    	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x763e3000)
    	/lib/ld-linux-armhf.so.3 (0x54b50000)
    	libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x763bc000)
    	libjpeg.so.62 => /usr/lib/arm-linux-gnueabihf/libjpeg.so.62 (0x76367000)
    	libpng12.so.0 => /lib/arm-linux-gnueabihf/libpng12.so.0 (0x76336000)
    	libtiff.so.5 => /usr/lib/arm-linux-gnueabihf/libtiff.so.5 (0x762be000)
    	libjasper.so.1 => /usr/lib/arm-linux-gnueabihf/libjasper.so.1 (0x76262000)
    	libImath.so.6 => /usr/lib/arm-linux-gnueabihf/libImath.so.6 (0x7624d000)
    	libIlmImf.so.6 => /usr/lib/arm-linux-gnueabihf/libIlmImf.so.6 (0x7619f000)
    	libIex.so.6 => /usr/lib/arm-linux-gnueabihf/libIex.so.6 (0x76178000)
    	libHalf.so.6 => /usr/lib/arm-linux-gnueabihf/libHalf.so.6 (0x76125000)
    	libIlmThread.so.6 => /usr/lib/arm-linux-gnueabihf/libIlmThread.so.6 (0x76110000)
    	libgtk-x11-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgtk-x11-2.0.so.0 (0x75d4d000)
    	libgdk-x11-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgdk-x11-2.0.so.0 (0x75ca9000)
    	libpangocairo-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangocairo-1.0.so.0 (0x75c8e000)
    	libatk-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libatk-1.0.so.0 (0x75c61000)
    	libcairo.so.2 => /usr/lib/arm-linux-gnueabihf/libcairo.so.2 (0x75b70000)
    	libgdk_pixbuf-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgdk_pixbuf-2.0.so.0 (0x75b40000)
    	libgio-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgio-2.0.so.0 (0x759f3000)
    	libpangoft2-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangoft2-1.0.so.0 (0x759d1000)
    	libpango-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpango-1.0.so.0 (0x7598f000)
    	libgobject-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgobject-2.0.so.0 (0x75935000)
    	libglib-2.0.so.0 => /lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0x75832000)
    	libfontconfig.so.1 => /usr/lib/arm-linux-gnueabihf/libfontconfig.so.1 (0x757f0000)
    	libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0x75757000)
    	libgthread-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgthread-2.0.so.0 (0x75745000)
    	libgtkglext-x11-1.0.so.0 => /usr/lib/libgtkglext-x11-1.0.so.0 (0x7573a000)
    	libgdkglext-x11-1.0.so.0 => /usr/lib/libgdkglext-x11-1.0.so.0 (0x756ee000)
    	libXmu.so.6 => /usr/lib/arm-linux-gnueabihf/libXmu.so.6 (0x756d2000)
    	libXt.so.6 => /usr/lib/arm-linux-gnueabihf/libXt.so.6 (0x7567b000)
    	libpangox-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangox-1.0.so.0 (0x7564f000)
    	libgmodule-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgmodule-2.0.so.0 (0x7563b000)
    	libdc1394.so.22 => /usr/lib/arm-linux-gnueabihf/libdc1394.so.22 (0x755b9000)
    	libv4l1.so.0 => /usr/lib/arm-linux-gnueabihf/libv4l1.so.0 (0x755a3000)
    	libavcodec.so.56 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavcodec.so.56 (0x74944000)
    	libavformat.so.56 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavformat.so.56 (0x74821000)
    	libavutil.so.54 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavutil.so.54 (0x747ed000)
    	libswscale.so.3 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libswscale.so.3 (0x747b3000)
    	libexpat.so.1 => /lib/arm-linux-gnueabihf/libexpat.so.1 (0x74780000)
    	libxcb-dri3.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-dri3.so.0 (0x74775000)
    	libxcb-present.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-present.so.0 (0x7476a000)
    	libxcb-sync.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb-sync.so.1 (0x7475d000)
    	libxshmfence.so.1 => /usr/lib/arm-linux-gnueabihf/libxshmfence.so.1 (0x7474b000)
    	libglapi.so.0 => /usr/lib/arm-linux-gnueabihf/libglapi.so.0 (0x74711000)
    	libXdamage.so.1 => /usr/lib/arm-linux-gnueabihf/libXdamage.so.1 (0x74706000)
    	libXfixes.so.3 => /usr/lib/arm-linux-gnueabihf/libXfixes.so.3 (0x746f9000)
    	libX11-xcb.so.1 => /usr/lib/arm-linux-gnueabihf/libX11-xcb.so.1 (0x746ef000)
    	libxcb-glx.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-glx.so.0 (0x746d7000)
    	libxcb-dri2.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-dri2.so.0 (0x746ca000)
    	libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0x746ab000)
    	libXxf86vm.so.1 => /usr/lib/arm-linux-gnueabihf/libXxf86vm.so.1 (0x7469e000)
    	libdrm.so.2 => /usr/lib/arm-linux-gnueabihf/libdrm.so.2 (0x74681000)
    	libuuid.so.1 => /lib/arm-linux-gnueabihf/libuuid.so.1 (0x7466d000)
    	liblzma.so.5 => /lib/arm-linux-gnueabihf/liblzma.so.5 (0x74645000)
    	libjbig.so.0 => /usr/lib/arm-linux-gnueabihf/libjbig.so.0 (0x74628000)
    	libXcomposite.so.1 => /usr/lib/arm-linux-gnueabihf/libXcomposite.so.1 (0x7461d000)
    	libXrender.so.1 => /usr/lib/arm-linux-gnueabihf/libXrender.so.1 (0x7460c000)
    	libXinerama.so.1 => /usr/lib/arm-linux-gnueabihf/libXinerama.so.1 (0x74600000)
    	libXi.so.6 => /usr/lib/arm-linux-gnueabihf/libXi.so.6 (0x745eb000)
    	libXrandr.so.2 => /usr/lib/arm-linux-gnueabihf/libXrandr.so.2 (0x745db000)
    	libXcursor.so.1 => /usr/lib/arm-linux-gnueabihf/libXcursor.so.1 (0x745ca000)
    	libpixman-1.so.0 => /usr/lib/arm-linux-gnueabihf/libpixman-1.so.0 (0x7451d000)
    	libxcb-shm.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-shm.so.0 (0x74511000)
    	libxcb-render.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-render.so.0 (0x74502000)
    	libselinux.so.1 => /lib/arm-linux-gnueabihf/libselinux.so.1 (0x744d5000)
    	libresolv.so.2 => /lib/arm-linux-gnueabihf/libresolv.so.2 (0x744b0000)
    	libharfbuzz.so.0 => /usr/lib/arm-linux-gnueabihf/libharfbuzz.so.0 (0x74454000)
    	libthai.so.0 => /usr/lib/arm-linux-gnueabihf/libthai.so.0 (0x74443000)
    	libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0x74433000)
    	libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0x743c0000)
    	libraw1394.so.11 => /usr/lib/arm-linux-gnueabihf/libraw1394.so.11 (0x743ac000)
    	libusb-1.0.so.0 => /lib/arm-linux-gnueabihf/libusb-1.0.so.0 (0x7438f000)
    	libv4l2.so.0 => /usr/lib/arm-linux-gnueabihf/libv4l2.so.0 (0x74372000)
    	libavresample.so.2 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavresample.so.2 (0x74353000)
    	libxvidcore.so.4 => /usr/lib/arm-linux-gnueabihf/libxvidcore.so.4 (0x74254000)
    	libx264.so.142 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libx264.so.142 (0x740e8000)
    	libvpx.so.1 => /usr/lib/arm-linux-gnueabihf/vfp/neon/libvpx.so.1 (0x73f5e000)
    	libvorbisenc.so.2 => /usr/lib/arm-linux-gnueabihf/libvorbisenc.so.2 (0x73ecc000)
    	libvorbis.so.0 => /usr/lib/arm-linux-gnueabihf/libvorbis.so.0 (0x73e94000)
    	libtheoraenc.so.1 => /usr/lib/arm-linux-gnueabihf/libtheoraenc.so.1 (0x73e4d000)
    	libtheoradec.so.1 => /usr/lib/arm-linux-gnueabihf/libtheoradec.so.1 (0x73e2a000)
    	libspeex.so.1 => /usr/lib/arm-linux-gnueabihf/libspeex.so.1 (0x73e03000)
    	libschroedinger-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libschroedinger-1.0.so.0 (0x73d57000)
    	libopus.so.0 => /usr/lib/arm-linux-gnueabihf/libopus.so.0 (0x73d09000)
    	libopenjpeg.so.5 => /usr/lib/arm-linux-gnueabihf/libopenjpeg.so.5 (0x73cda000)
    	libmp3lame.so.0 => /usr/lib/arm-linux-gnueabihf/libmp3lame.so.0 (0x73c61000)
    	libgsm.so.1 => /usr/lib/arm-linux-gnueabihf/libgsm.so.1 (0x73c4e000)
    	libva.so.1 => /usr/lib/arm-linux-gnueabihf/libva.so.1 (0x73c21000)
    	librtmp.so.1 => /usr/lib/arm-linux-gnueabihf/librtmp.so.1 (0x73bf8000)
    	libgnutls-deb0.so.28 => /usr/lib/arm-linux-gnueabihf/libgnutls-deb0.so.28 (0x73aeb000)
    	libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0x73ad3000)
    	libXau.so.6 => /usr/lib/arm-linux-gnueabihf/libXau.so.6 (0x73ac7000)
    	libXdmcp.so.6 => /usr/lib/arm-linux-gnueabihf/libXdmcp.so.6 (0x73abb000)
    	libgraphite2.so.3 => /usr/lib/arm-linux-gnueabihf/libgraphite2.so.3 (0x73a8e000)
    	libdatrie.so.1 => /usr/lib/arm-linux-gnueabihf/libdatrie.so.1 (0x73a82000)
    	libudev.so.1 => /lib/arm-linux-gnueabihf/libudev.so.1 (0x73a64000)
    	libv4lconvert.so.0 => /usr/lib/arm-linux-gnueabihf/libv4lconvert.so.0 (0x739df000)
    	libogg.so.0 => /usr/lib/arm-linux-gnueabihf/libogg.so.0 (0x739d1000)
    	liborc-0.4.so.0 => /usr/lib/arm-linux-gnueabihf/liborc-0.4.so.0 (0x73951000)
    	libhogweed.so.2 => /usr/lib/arm-linux-gnueabihf/libhogweed.so.2 (0x73917000)
    	libnettle.so.4 => /usr/lib/arm-linux-gnueabihf/libnettle.so.4 (0x738d7000)
    	libgmp.so.10 => /usr/lib/arm-linux-gnueabihf/libgmp.so.10 (0x73865000)
    	libp11-kit.so.0 => /usr/lib/arm-linux-gnueabihf/libp11-kit.so.0 (0x73824000)
    	libtasn1.so.6 => /usr/lib/arm-linux-gnueabihf/libtasn1.so.6 (0x73804000)
    enfin, parce que je comprends que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    libgtk-x11-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgtk-x11-2.0.so.0 (0x75d4d000)
    montre une dépendance à gtk2. Est-ce correct?

    j'ai alors deux réflexions,
    1/ pourquoi utiliser toutes ces bibliothèques?
    probablement parce que j'ai un include trop large
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <opencv2/opencv.hpp>
    ce qui inclut une large liste de bibliothèques dont plusieurs inutiles, je crois, pour mon projet. (vu que sous opencv, je fais uniquement de l'acquisition d'image sur usbcam puis de la manip de matrice relativement simple de type resize, changement de référentiel de couleur, corrélation ...)
    Peutêtre que je peux mieux cibler de quelles bibliothèques d'opencv j'ai réellmeent besoin (ce qui aurait du être fait dés le début c'est vrai) pour limiter mes dépendances à gtk2, mais ça ne disparaitra pas.
    et si le projet évolue, les problèmes reviendront ...

    2/ puis-je forcer opencv à dépendre de gtk3 et non gtk 2
    je trouve ce post:
    http://answers.opencv.org/question/1...413-with-gtk3/
    qui semble intéressant .... mais l'auteur ne garantie rien, et mentionne plus loin une erreur .. alors je suis un peu frileux à mettre cela en place et ne trouve pas les fichiers qu'il faudarit modifier selon cette solution

    Que penses-tu donc de cette dépendance, et comment puis-je m'en affranchir?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    il semble que depuis la version 3.1, opencv dépend de gtk3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=822607
    la version opencv 3.3 est-elle full compatible avec les versions précédentes et stable ???

  5. #5
    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
    Points : 2 002
    Points
    2 002
    Par défaut
    De ce que je comprends, la dépendance vient du module highgui.

    libopencv_calib3d.so dépend de libopencv_highgui.so, et c'est lui qui dépend de GTK 2 dans la version d'opencv que tu utilises. Le post que tu cites montre qu'il y a déjà un bon moment que l'intégration avec GTK 3 a été préparée. Il faut juste déterminer avec quelle version d'opencv elle a été finalement intégrée, et si tu peux facilement installer cette version sur ton système.
    Je ne connais pas opencv, je ne saurais donc te dire si la compatibilité d'API a été conservé entre ta version et les versions plus récentes. A toi d'écumer les release notes d'opencv pour voir les changements entre la version que tu utilises et les versions plus récentes.

    En revanche, tu peux en dire plus sur la version d'opencv que tu utilises ? Et sur quelle version d'OS (tu parles de Debian) ? Comment as tu installé opencv (paquets de ta distribution, compilation et installation manuelle ?)
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  6. #6
    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
    Points : 2 002
    Points
    2 002
    Par défaut
    En regardant l'historique de bugs, je vois que le support GTK 3 a été introduit avec opencv 3.0.0.
    https://github.com/opencv/opencv/pull/1552

    Donc pour le support GTK 3, oui, il faudrait passer à opencv 3.x.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  7. #7
    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
    Points : 2 002
    Points
    2 002
    Par défaut
    OpenCV 3 n'est packagé pour aucune version stable de Debian, du coup il faut le recompiler.
    Il y a des scripts qui trainent pour ça, j'ai trouvé par exemple:
    http://milq.github.io/install-opencv-ubuntu-debian/

    Il faut juste modifier l'appel à CMake pour activer le support GTK 3 et supprimer la ligne qui installe Qt.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    ma version d'os est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PRETTY_NAME=*«*Raspbian GNU/Linux 8 (jessie)*»
    NAME=*«*Raspbian GNU/Linux*»
    VERSION_ID=*«*8*»
    VERSION=*«*8 (jessie)*»
    ID=raspbian
    ID_LIKE=debian
    ma version d'opencv
    cela remonte à loin, je pense que j'ai installé opencv avec une ligne de commande, ou sinon depuis l'interface graphique ad/remove software

    ce qui est sûr est que je n'ai pas recompilé la bibliothèque, je n'ai d'ailleurs jamais fait cela, il semblerait que ça me pende au nez ....

    Je vais essayé de voir la portabilité de 2.4.x vers 3.3. Peut-être vais-je aussi tout simplement essayé de désinstaller opencv actuel, puis réinstaller suivant le script que tu pointes, je verrai bien ce qu'en pense mon application. (le script me parait clair ...)

    je vais en apprendre un paquet de chose avec ce projet.

    merci

  9. #9
    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
    Points : 2 002
    Points
    2 002
    Par défaut
    Ok, avec les versions c'est plus facile. Du coup je trouve de suite:
    https://www.pyimagesearch.com/2015/1...spbian-jessie/

    À l'étape où il te fait installer libgtk2.0-dev, installe à la place libgtk3.0-dev. Dans la config opencv 3.x, GTK 3 est prioritaire sur GTK 2, et activée par défaut, donc tu n'as normalement rien d'autre à faire que de t'armer de patience (1h35 de compilation chez lui).
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    j'ai direct embrayé sur le premier lien
    http://milq.github.io/install-opencv-ubuntu-debian/
    sans passer par le script, ligne par ligne, en prenant garde de remplacer le numéro de version dans les lignes de commande par 3.3.0

    cela c'est plutôt bien passé, semble-t-il. Je m'y suis repris à deux fois, car un premier plantage dû, je pense, à la mise en veille du RPI.

    cela a été assez long, et la température du processeur a bien dépassé les 80°

    le tuto propose de teste des exécutables: ok
    de tester une compil + exécutable: ok
    je vérifie la version installée: 3.3.0 : ok

    par curiosité, je me ballade pour voir ce qui a été installé dnas les dossiers lib et include de user:

    dans include:
    tj un dossier opencv2 qui n'a pas été modifié lors de cette opération: ok
    pas de dossier opencv3

    dans lib:
    rien qui ne ressemble à opencv

    puis dans la racine pi/opencv/opencv-3.3.0, je trouve quantité de choses dans le dédale de dossier, mais rien qui ne ressemble à opencv3, ni dans le nom des dossiers et fichiers, ni dans les include des opencv.hpp, ni dans les CMakeList ....

    Outre le fait que ça ne me mets pas en confiance dans le fait que tout ce soit passer correctement (les tests du tuto auraient-ils pu s'appuyer sur une ancienne version 2.x, pourtant la demande de version me retourne bien 3.3.0), mais bon, je suis d'un naturel anxieu ...

    je ne sais pas comment include les biblio 3.3.0 dans mon projet code block.

    En effet, jusqu'à présent, je faisais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include <opencv2/opencv.hpp>
    qui lui même contenait les includes vers les diverses lib

    et dans les options de compil et linkage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pkg-config opencv --cflags
    pkg-config opencv --libs
    Comment maintenant inclure le .hpp qui pointe vers les lib 3.3.0?

    A la fin de ce tuto:http://pklab.net/?id=392&lang=EN
    il est proposé un exemple c++ pour vérifier que tout se déroule bien, et je remarque que il garde un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <opencv2/opencv.hpp>
    alors que c'est un tuto pour version 3.2.0 !!

    j'en perds la tête, et ce n'est pas concevable pour le bon déroulement du reste de ma vie

    Je poursuis mes recherches "comment compiler / linker opencv3 sous codeblocks ....

    Que pensez-vous de tout cela?

  11. #11
    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
    Points : 2 002
    Points
    2 002
    Par défaut
    Si tu regardes la branche master du projet opencv, tu peux comprendre un peu mieux comment est architecturé le projet:
    https://github.com/opencv/opencv

    Du coup, effectivement, dans include, pas de dossier opencv3. Je suis d'accord que c'est assez déroutant, d'autant que cela veut dire que les deux versions n'ont pas l'air installables en parallèle si elles vont copier leurs fichiers au même endroit. En fouillant un peu, on voit que la version est indiquée dans le source dans modules/core/include/opencv2/core/version.hpp.
    Par exemple sur la version de développement c'est actuellement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #define CV_VERSION_MAJOR    3
    #define CV_VERSION_MINOR    3
    #define CV_VERSION_REVISION 0
    #define CV_VERSION_STATUS   "-dev"
    Je t'avoue que c'est assez "grouic" ce qu'ils font. Normalement tu définis ça dans le build system (CMake ici en l'occurence), et tu génères un fichier contenant les informations de version, un build system sert à ça. Eux ils mettent ça en dur dans un .hpp qu'ils parsent dans le build system O_o.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    Ok,
    je comprends donc pourquoi je m'y perd.


    Les conflits perdurent entre gtk2 et 3 à la compilation, donc peut-être que je ne pointe pas bien vers opencv3.3

    J'ai un post en cours pour adapter mes includes et mes settings de compilation et linkage sous code block (qui pourtant ne devraient pas trop changer étant donné ce qu'on a vient de voir sur l'arborescence des lib de la version 3.3 ...)

    j'espère voir bientôt le bout du tunnel.

    En tout cas, tous ces échanges sont très constructifs vers la solution et instructifs pour moi...

    Merci infiniment

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    tout est en ordre,
    résintall d'opencv 3 comme dans le tuto cité http://milq.github.io/install-opencv-ubuntu-debian/
    qui n'a de dépendance que vers gtk3

    install glade 3

    et tout roule, du moins il n'y a plus de pb de compil, (et je n'ai modifié en rien les settings de compil et linkage)

    merci beaucoup liberforce pour ton aide précieuse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment démarrer l'application avec "Ouvrir avec" ?
    Par chourmo dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 15/11/2005, 17h01
  2. Comment démarrer une application à distance ?
    Par Jean-Jacques Engels dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 20/10/2005, 14h53
  3. [XML][C++] Débutant , comment démarrer ?
    Par Clad3 dans le forum Bibliothèques
    Réponses: 17
    Dernier message: 28/03/2005, 19h43
  4. Comment démarrer manuellement un service NT ?
    Par Desraux dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 21/03/2005, 09h35

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