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

OpenCV Discussion :

OpenCV et Qt


Sujet :

OpenCV

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 10
    Points
    10
    Par défaut OpenCV et Qt
    Salut,

    Je cherche à compiler un petit projet Qt qui utilise OpenCV. Je suis sous Ubuntu 12.04 (64 bits).

    J'ai suivi ce tutoriel et j'ai compilé la version 2.4.3 d'OpenCV.

    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
    victor@test:~/OpenCV-2.4.3/build$ cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_FFMPEG=ON ..
    -- Detected version of GNU GCC: 46 (406)
    -- Found OpenEXR: /usr/lib/libIlmImf.so
    -- checking for module 'gstreamer-base-0.10'
    --   package 'gstreamer-base-0.10' not found
    -- Looking for linux/videodev.h
    -- Looking for linux/videodev.h - not found
    -- Looking for linux/videodev2.h
    -- Looking for linux/videodev2.h - found
    -- Looking for libavformat/avformat.h
    -- Looking for libavformat/avformat.h - found
    -- Looking for ffmpeg/avformat.h
    -- Looking for ffmpeg/avformat.h - not found
    CUDA_TOOLKIT_ROOT_DIR not found or specified
    -- Could NOT find CUDA (missing:  CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY) (Required is at least version "4.1")
    -- Found Sphinx Sphinx v1.1.3: /usr/bin/sphinx-build
    -- 
    -- General configuration for OpenCV 2.4.3 =====================================
    -- 
    --   Platform:
    --     Host:                        Linux 3.5.0-23-generic x86_64
    --     CMake:                       2.8.7
    --     CMake generator:             Unix Makefiles
    --     CMake build tool:            /usr/bin/make
    --     Configuration:               Release
    -- 
    --   C/C++:
    --     Built as dynamic libs?:      YES
    --     C++ Compiler:                /usr/bin/c++  (ver 4.6.3)
    --     C++ flags (Release):         -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -O3 -DNDEBUG  -DNDEBUG
    --     C++ flags (Debug):           -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -g  -O0 -DDEBUG -D_DEBUG -ggdb3
    --     C Compiler:                  /usr/bin/gcc
    --     C flags (Release):           -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -O3 -DNDEBUG  -DNDEBUG
    --     C flags (Debug):             -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -g  -O0 -DDEBUG -D_DEBUG -ggdb3
    --     Linker flags (Release):      
    --     Linker flags (Debug):        
    --     Precompiled headers:         NO
    -- 
    --   OpenCV modules:
    --     To be built:                 core imgproc flann highgui features2d calib3d ml video objdetect contrib nonfree photo legacy gpu python stitching ts videostab
    --     Disabled:                    world
    --     Disabled by dependency:      -
    --     Unavailable:                 androidcamera java ocl
    -- 
    --   GUI: 
    --     QT 4.x:                      YES (ver 4.8.1 EDITION = OpenSource)
    --     QT OpenGL support:           YES (/usr/lib/x86_64-linux-gnu/libQtOpenGL.so)
    --     OpenGL support:              YES (/usr/lib/x86_64-linux-gnu/libGLU.so /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libSM.so /usr/lib/x86_64-linux-gnu/libICE.so /usr/lib/x86_64-linux-gnu/libX11.so /usr/lib/x86_64-linux-gnu/libXext.so)
    -- 
    --   Media I/O: 
    --     ZLib:                        /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.3.4)
    --     JPEG:                        /usr/lib/x86_64-linux-gnu/libjpeg.so (ver )
    --     PNG:                         /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.2.46)
    --     TIFF:                        /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 - 3.9.5)
    --     JPEG 2000:                   /usr/lib/x86_64-linux-gnu/libjasper.so (ver 1.900.1)
    --     OpenEXR:                     /usr/lib/libImath.so /usr/lib/libIlmImf.so /usr/lib/libIex.so /usr/lib/libHalf.so /usr/lib/libIlmThread.so (ver 1.6.1)
    -- 
    --   Video I/O:
    --     DC1394 1.x:                  NO
    --     DC1394 2.x:                  YES (ver 2.2.0)
    --     FFMPEG:                      YES
    --       codec:                     YES (ver 53.35.0)
    --       format:                    YES (ver 53.21.1)
    --       util:                      YES (ver 51.22.1)
    --       swscale:                   YES (ver 2.1.0)
    --       gentoo-style:              YES
    --     GStreamer:                   NO
    --     OpenNI:                      NO
    --     OpenNI PrimeSensor Modules:  NO
    --     PvAPI:                       NO
    --     GigEVisionSDK:               NO
    --     UniCap:                      NO
    --     UniCap ucil:                 NO
    --     V4L/V4L2:                    Using libv4l (ver 0.8.6)
    --     XIMEA:                       NO
    --     Xine:                        NO
    -- 
    --   Other third-party libraries:
    --     Use IPP:                     NO
    --     Use TBB:                     YES (ver 4.0 interface 6000)
    --     Use Cuda:                    NO
    --     Use OpenCL:                  NO
    --     Use Eigen:                   YES (ver 2.0.17)
    -- 
    --   Python:
    --     Interpreter:                 /usr/bin/python (ver 2.7.3)
    --     Libraries:                   /usr/lib/libpython2.7.so
    --     numpy:                       /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.6.1)
    --     packages path:               lib/python2.7/dist-packages
    -- 
    --   Documentation:
    --     Build Documentation:         YES
    --     Sphinx:                      /usr/bin/sphinx-build (ver Sphinx v1.1.3)
    --     PdfLaTeX compiler:           /usr/bin/pdflatex
    -- 
    --   Tests and samples:
    --     Tests:                       YES
    --     Performance tests:           YES
    --     Examples:                    YES
    -- 
    --   Install path:                  /usr/local
    -- 
    --   cvconfig.h is in:              /home/victor/OpenCV-2.4.3/build
    -- -----------------------------------------------------------------
    -- 
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/victor/OpenCV-2.4.3/build
    Le projet Qt est assez simple, je l'ai trouvé ici

    Voilà le fichier .PRO adapté pour Linux :

    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
    #-------------------------------------------------
    #
    # Project created by QtCreator 2013-03-24T11:56:13
    #
    #-------------------------------------------------
     
    QT       += core gui
     
    TARGET = OpenCV_Webcam
    TEMPLATE = app
     
    INCLUDEPATH += /usr/local/include/opencv
     
    LIBS += -L/usr/local/lib -lopencv_ffmpeg -llibopencv_gpu -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d  -opencv_flann -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_video
     
    SOURCES += main.cpp\
            mainwindow.cpp
     
    HEADERS  += mainwindow.h
     
    FORMS    += mainwindow.ui
    A la compilation j'ai ces deux erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    erreur : cannot find -lopencv_ffmpeg 
    erreur : cannot find -llibopencv_gpu
    Voilà ma question : comment compiler OpenCV pour que ça marche ?
    Merci d'avance

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Je n'ai pas réussi à résoudre le problème, je me suis tourné vers d'autres exemples sans Qt pour commencer.

    Installer OpenCV pour Ubuntu 12.04.x (32 & 64bits)
    Un premier exemple sympa avec une webcam

    Si quelqu'un arrive à compiler un projet Qt avec OpenCV sous Ubuntu 12.04 je serai ravi du partage

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Salut et bienvenue sur le forum

    Tu as une raison particulière de compiler OpenCV toi même ? J'espère que tu n'as pas compilé non plus Qt ?

    Dans ton premier message, la dernière ligne des messages cmake :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -- Build files have been written to: /home/victor/OpenCV-2.4.3/build
    Et dans ton .pro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INCLUDEPATH += /usr/local/include/opencv
    LIBS += -L/usr/local/lib
    Comme tu dois t'en douter puisque je te cite ces messages en particulier, c'est que ça va pas
    Tu as utiliser les chemins par défaut des libs (/usr/local/include et /usr/local/lib) alors que ta compilation d'OpenCV est ailleurs. Faut corriger ce point.

    Sinon, quand tu parles de Qt, j'ai l'impression que tu confonds le framework Qt et l'éditeur Qt Creator fournit avec Qt

    Le plus simple pour tester OpenCV et Qt est de simplement installer les paquets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo apt-get install libcv-dev libqt4-dev
    Sur Ubuntu, beaucoup de libs de développement sont fournit directement dans les paquets, tu n'as pas besoin de compiler toi même (sauf cas d'utilisation particulier)

    EDIT: je viens de vérifier, la version dans les dépôts est la 2.4.2. Si tu veux la 2.4.3 (pourquoi pas la dernière, la 2.4.4 ?), il faudra en effet la compiler toi meme

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Salut merci pour l’accueil

    Comme tu dois t'en douter puisque je te cite ces messages en particulier, c'est que ça va pas
    Tu as utiliser les chemins par défaut des libs (/usr/local/include et /usr/local/lib) alors que ta compilation d'OpenCV est ailleurs. Faut corriger ce point
    Je n'ai inclus que le cmake sur le forum, il reste ensuite le make et le sudo make install, lors du sudo make install, les fichiers générés (toute la librairie) sont copiés dans les répertoires par défaut Pas de problème de ce côté, la preuve est que les librairies sont trouvées (sauf ffmpeg et gpu).

    Apparemment la librairie GPU on peut s'en passer dans le .PRO, c'est juste de l'optimisation.

    Sinon, quand tu parles de Qt, j'ai l'impression que tu confonds le framework Qt et l'éditeur Qt Creator fournit avec Qt
    Ah oui c'est un projet Qt Creator, qui utilise le framework Qt, désolé du raccourci je connais pas bien les différences.

    Sur Ubuntu, beaucoup de libs de développement sont fournit directement dans les paquets, tu n'as pas besoin de compiler toi même (sauf cas d'utilisation particulier)
    En fait j'ai utilisé le paquet au début (libcv-dev) mais j'avais ces deux erreurs. Alors je me suis lancé dans la compilation des sources en espérant ajouter ces librairies à la compilation

    J'ai compilé la 2.4.4a et j'ai toujours le même problème malgré l'option FFMPEG=ON dans le cmake (qui me confirme "FFMPEG YES").
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_FFMPEG=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
    Je redonnerai des infos ici sur mon avancée OpenCV / Qt

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Salut,

    J'ai un programme très simple :
    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
    #include <stdio.h>
    #include <assert.h>
    #include "highgui.h"
    #include "cv.h"
     
    int main() {
    	char key;		// Touche clavier
    	IplImage *image;	// Image
    	CvCapture *capture;	// Capture vidéo
     
    	// Ouvrir le flux vidéo
    	//capture = cvCreateFileCapture("/dev/video0"); // chemin pour un fichier
    	capture = cvCreateCameraCapture(CV_CAP_ANY);
        	assert(capture); 	// Vérifier si l'ouverture du flux est ok
     
    	cvNamedWindow("Camera", CV_WINDOW_AUTOSIZE);	// Définition de la fenêtre
     
    	// Boucle tant que l'utilisateur n'appuie pas sur la touche q (ou Q)
    	while(key != 'q' && key != 'Q')
    	{
    	   image = cvQueryFrame(capture);	// On récupère une image
    	   cvShowImage( "Camera", image);	// On affiche l'image dans une fenêtre
     	   key = cvWaitKey(1);	   		// On attend 1ms
     	}
     
    	cvReleaseCapture(&capture);
    	cvDestroyWindow("Camera");
     
    	return 0;
     
    }
    Que je compile avec un makefile. A la main ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ monProgramme.cpp -o monProgramme -I /usr/local/include/opencv -L /usr/local/lib -lm -lopencv_core -lopencv_highgui -lopencv_imgproc
    Ce programme marche bien, il m'envoie ca quand le lance le programme puis la fenêtre s'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP
    init done 
    opengl support available
    ---------------------------------------------------

    J'essaie de reproduire la même chose dans un projet Qt Creator, j'ai copié ce projet.
    Le projet compile mais quitte dès le début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur de segmentation (core dumped)
    En mode debug dans Qt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Signal name : SIGSEGV
    Signal meaning : Segmentation fault
    La flèche pointe sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0x7ffff06e5d0c  <+0x0000>         lock incl (%rbx)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0	??	/usr/lib/x86_64-linux-gnu/libQtTest.so.4		0x7ffff06e5d0c
    Le projet est en pièce jointe du message Un coup de pouce est bienvenue
    Fichiers attachés Fichiers attachés

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Après installation d'Ubuntu 13.04 et installation d'OpenCV :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo apt-get install -y libopencv-dev libcv-dev libhighgui-dev
    Le projet compile et se lance correctement

  7. #7
    Membre actif
    Inscrit en
    Mai 2012
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 65
    Points : 282
    Points
    282
    Par défaut
    J'ai vu que tu as résolu ton problème en installant les paquets, mais si tu veux le faire à partir des sources que tu as compilés toi-même, la solution dans un premier lieu est déjà d'installer cmake-gui afin de choisir les options de compilations en mode graphique plutôt que dans un terminal.
    Comme tu ne possèdes pas CUDA, tu devrais décocher l'option "WITH_CUDA".

    Ensuite, il faudra mettre à jour ta variable d'environnement PATH, pour lui indiquer où se trouve opencv :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export PATH = $PATH:chemin_opencv
    Attention à le refaire à chaque nouvelle ouverture d'un terminal, sinon écrire cette ligne dans le fichier .bash_rc pour que ce soit permanent

    Ensuite dans ton fichier .pro, plutôt que d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INCLUDEPATH += /usr/local/include/opencv
     
    LIBS += -L/usr/local/lib -lopencv_ffmpeg -llibopencv_gpu -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d  -opencv_flann -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_video
    Écris plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INCLUDEPATH += -I /usr/local/include/opencv
     
    LIBS += `pkg-config opencv --libs`
    Normalement ça devrait fonctionner

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

Discussions similaires

  1. OpenCV sous vista
    Par gandanlf dans le forum OpenCV
    Réponses: 10
    Dernier message: 16/03/2007, 15h55
  2. probleme avec opencv
    Par dz_robotix dans le forum Visual C++
    Réponses: 2
    Dernier message: 06/03/2007, 10h39
  3. Réponses: 1
    Dernier message: 01/10/2006, 15h44
  4. Traitement d'image java OpenCV
    Par moris113 dans le forum Multimédia
    Réponses: 1
    Dernier message: 12/07/2006, 19h12
  5. [Qt]Afficher une image d'openCV dans un pixmap
    Par astragoth dans le forum Qt
    Réponses: 8
    Dernier message: 14/03/2006, 15h14

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