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

Windows Discussion :

OpenCV 2.2 Windows cv::VideoCapture librairies?


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Par défaut OpenCV 2.2 Windows cv::VideoCapture librairies?
    Bonjour

    J'ai depuis une semaine installé la dernière version d'openCV disponible pour windows via le .exe : OpenCV-2.2.0-win32-vs2010.exe

    Pour résumer je n'arrive pas a utiliser les nouvelles classes fournies par openCV tel que cv::VideoCapture ou même cv::Mat

    Je compile mon application avec QT , mon fichier *.pro est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    TEMPLATE = app
    TARGET = 
    DEPENDPATH += .
    win32:INCLUDEPATH += C:/OpenCV2.2/include
    win32:LIBS += C:/OpenCV2.2/lib/opencv_core220d.lib
    win32:LIBS += C:/OpenCV2.2/lib/opencv_highgui220d.lib
    win32:LIBS += C:/OpenCV2.2/lib/opencv_video220d.lib
    win32:LIBS += C:/OpenCV2.2/lib/opencv_ml220d.lib
    
    # Input
    HEADERS += QCVInterface.h QCVModuleHandler.h QCVModuleHandlerInterface.h QMyMdiArea.h
    SOURCES += main.cpp QCVInterface.cpp QCVModuleHandler.cpp QMyMdiArea.cpp
    Mon code est le suivant

    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
    #include <QApplication>
    
    #include "QCVInterface.h"
    
    int main(int argc,char * argv[])
    {
      QApplication app(argc,argv);
      
      QCVInterface qcvinterface;
      qcvinterface.show();
      
     
      cv::VideoCapture cap();
      cap.open(0);
    
      
      app.exec();
    
      return 0;
    }
    Et mes erreurs sont les suivantes

    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
    C:\Users\gobelin\Documents\Clementine>make
    make -f Makefile.Debug
    make[1]: Entering directory `C:/Users/gobelin/Documents/Clementine'
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
    DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..
    \..\..\Qt\2010.05\qt\include\QtCore" -I"..\..\..\..\Qt\2010.05\qt\include\QtGui"
     -I"..\..\..\..\Qt\2010.05\qt\include" -I"..\..\..\..\OpenCV2.2\include" -I"..\.
    .\..\..\Qt\2010.05\qt\include\ActiveQt" -I"debug" -I"..\..\..\..\Qt\2010.05\qt\m
    kspecs\win32-g++" -o debug\main.o main.cpp
    main.cpp: In function 'int qMain(int, char**)':
    main.cpp:14: error: request for member 'open' in 'cap', which is of non-class ty
    pe 'cv::VideoCapture()'
    make[1]: *** [debug/main.o] Error 1
    make[1]: Leaving directory `C:/Users/gobelin/Documents/Clementine'
    make: *** [debug] Error 2
    error: request for member 'open' in 'cap', which is of non-class ty

    Je ne comprend pas cette erreur:
    J'ai essayer d'inclure tous les .lib possible dans le .pro, mais rien ni fait
    et j'ai la meme erreur lorsque je déclare un cv::Mat comme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cv::Mat img(10,10,CV_32FC2);
    cela ne compile pas.

    Je suis a cours d'idée maintenant.
    Si qq'un à une idée ou un début de piste se serait cool merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Par défaut
    Je connais pas du tout openCV, mais l'erreur en question signifie en général que ton "objet" en question est mal initialisé ou pas du tout initialisé.

    A tout hasard, essaye à la place de :
    cv::VideoCapture cap();
    par
    cv::VideoCapture cap(0);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Par défaut
    Merci de ta reponse, mais malheureusement g déja essayé tous les constructeurs possible g toujours la même erreur. je pense que mon code est juste mais que j'ai un problème de librairie ou d'inclusion.

    Pour l'instant j'inclu que <cv.h> et <highgui.h>

    En fait avec la nouvelle version d'OpenCV le nom des librairies a changé et du coup je suis perdu.

    Cependant j'ai essayer d'inclure toutes les librairies mais rien ni fait.

    Je pense que pas mal de personnes seront confrontées à la même erreur quand elles passeront à la nouvelle version. C'est pk se serait cool de trouver une réponse.

    Je cherche toujours mais sans succes de mon coté.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Par défaut
    j'ai regardé la documentation openCV2.1, et j'ai télécharger la 2.2 (le zip) pour regarder sa doc et puis les includes.
    Je reste sur l'idée que l'erreur que te donne le compilateur concerne soit la mauvaise initialisation de ton "objet", soit un appel vers une méthode inexistante dans la classe en général. Et la je penche encore pour le fait que ton objet n'est pas initialisé/pas initialisé correctement.

    Je vais ptre insister dans la mauvaise voie, mais peut tu essayer
    cv::VideoCapture cap;
    cap.open(0);
    à la place de :
    cv::VideoCapture cap();
    cap.open(0);

    Je continue à regarder la documentation pendant que tu essaie, si je vois quelquechose (je vais finir par l'installer et tester )

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Par défaut
    Yop, merci de ta réponse.

    Alors si je fais comme tu dis mais j'avais déjà tenté j'obtient cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    debug/main.o: In function `Z5qMainiPPc':
    C:\Users\gobelin\Documents\Clementine/main.cpp:13: undefined reference to `cv::V
    ideoCapture::VideoCapture()'
    C:\Users\gobelin\Documents\Clementine/main.cpp:17: undefined reference to `cv::V
    ideoCapture::~VideoCapture()'
    C:\Users\gobelin\Documents\Clementine/main.cpp:17: undefined reference to `cv::V
    ideoCapture::~VideoCapture()'
    collect2: ld returned 1 exit status
    make[1]: *** [debug\Clementine.exe] Error 1
    make[1]: Leaving directory `C:/Users/gobelin/Documents/Clementine'
    make: *** [debug] Error 2
    Cependant si je fais cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cv::VideoCapture cap();
    Ca compile mais je ne peux pas accéder à une fonction sous peine d'obtenir l'erreur du début.

    Si j'utilise n'importe quel autre constructeur comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cv::VideoCapture cap(0);
    cv::VideoCapture cap("test.avi");
    etc...
    Ca compile pas ca me dit: "undefined reference to le constructeur que j'utilise".

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Par défaut
    Sur un autre forum g trouvé:

    Tu utilises "MinGW".
    Si tu téléchargé OpenCV depuis le site et installé la version précompilée, celle-ci a été compilée avec MSVC.

    Il te faut donc soit :
    - compiler ton appli avec le compilateur microsoft (et utiliser la version Qt adéquate)
    - re-compiler openCV avec MinGw

    Note que Qt fourni une version précompilée également avec MSVC
    Dernière modification par ness (25-11-2010 04:41:44)
    C'est exactement mon cas . je vais donc :

    -Désinstaller OpenCV
    -Et recompiler avec MinGW fourni par QT4.7

    Je test et je reviens dire si c'est un succes ou pas.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/02/2015, 12h57
  2. [Librairies] recuperer le login de connexion de windows
    Par fxone dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 02/11/2005, 14h35
  3. [Débutant] utilisation de la librairie windows
    Par tavman dans le forum Windows
    Réponses: 12
    Dernier message: 27/08/2005, 17h21
  4. Portage d'une librairie linux sous windows
    Par sleg dans le forum C++
    Réponses: 22
    Dernier message: 31/05/2005, 23h21
  5. [Librairie .h] Pb entre windows.h et afxwin.h
    Par thehpman dans le forum MFC
    Réponses: 11
    Dernier message: 13/04/2005, 14h53

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