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 :

Problème avec findContours


Sujet :

OpenCV

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Problème avec findContours
    Bonjour,
    Actuellement, je suis en terminale S-SI.
    Dans le cadre de mon PPE,j'essaye de détecter ,sur une image récupérée avec une webcam, si l’œil est fermé ou non.
    je programme en C++ (je suis encore un débutant) et j'ai décidé d'utiliser la bibliothèque OpenCV pour faire le traitement d'image.
    Je récupère l'image puis j'essaye de trouver les contours avec la fonction findContours.
    Je compile et c'est là qu'apparaît une erreur.
    Mon compilateur me renvoie:"error: expected primary-expression before 'Contours' "
    Je comprends pas cette erreur. Est ce que quelqu'un pourrait m'aider ?




    Code C++ : 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
    #include <iostream>
    #include <string>                       //  Pour écrire des chaînes
    #include <fstream>                      // Ecrire ou lire des fichiers
    #include <vector>                       // Tableaux dynamiques
     
    #include "opencv/highgui.h"             // Directives de preprocesseurs pour inclure OpenCV
    #include "opencv2/highgui/highgui.hpp"
    #include "opencv2/core/core_c.h"
    #include "opencv2/opencv.hpp"
    #include "opencv2/imgproc/imgproc.hpp"
    #include "opencv2/objdetect/objdetect.hpp"
     
     
     
    using namespace std;     // Espaces de noms
    using namespace cv;
     
    int main()               // Fonctions principales
    {
        int i(1);
        while (i==1)         // Boucle infini
        {
     
            IplImage* oeil = NULL; //On crée une image oeil
            CvCapture* capture = cvCaptureFromCAM(0);     // Initialise la capture
            oeil=cvQueryFrame(capture); // On recupere l'image
     
            findContours(oeil,vector<vector<Point> > Contours,RETR_TREE,CHAIN_APPROX_SIMPLE); // Trouver les contours
     
     
            // programme
     
            cvNamedWindow("Photo webcam", CV_WINDOW_AUTOSIZE);  // On crée une fenêtre
            cvMoveWindow("Photo webcam", 100, 100);   // Position de la fenêtre
     
            cvShowImage("Photo webcam", oeil );    // Affichage de l'oeil
     
            cvWaitKey (2000);// On attend que l'utilisateur appuie sur un bouton, l'argument indique le nombre de ms
     
            cvReleaseImage(&oeil );    // On libére la mémoire utilisée pour l'image
            cvReleaseCapture(&capture);// On libere la capture de la webcam en mémoire
     
     
        }
        return 0;
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Sépare la déclaration et utilisation en deux instructions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vector<vector<Point> > contours;
    findContours(oeil, contours, RETR_TREE, CHAIN_APPROX_SIMPLE); // Trouver les contours
    Remarque : puisque tu codes en C++ utilise vraiment son namespace cv::, ici IplImage, cvCaptureFromCAM, CvCapture, cvQueryFrame, cvNamedWindow, cvMoveWindow, cvShowImage, cvWaitKey, cvReleaseImage, cvReleaseCapture viennent de l'interface C d'OpenCV.

    Un exemple ici de code C++.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Tout d'abord, merci de m'avoir répondu.
    J'ai suivi le conseil en déclarant en premier les contours puis en les utilisant. Cependant, ça ne fonctionne toujours pas et le compilateur me renvoie l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ""error: no matching function for call to 'findContours(IplImage*&, std::vector<std::vector<cv::Point_<int>, std::allocator<cv::Point_<int> > >, std::allocator<std::vector<cv::Point_<int>, std::allocator<cv::Point_<int> > > > >&, cv::<anonymous enum>, cv::<anonymous enum>)'| 
    "
    Puis j'ai essayé le code en C++ donné par la documentation openCV en lien.
    Je compile et ce programme ne marche pas non plus.
    Le compilateur renvoie comme erreur:
    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
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|18|undefined reference to `cv::VideoCapture::VideoCapture(int)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|19|undefined reference to `cv::VideoCapture::isOpened() const'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|23|undefined reference to `cv::namedWindow(cv::String const&, int)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|27|undefined reference to `cv::VideoCapture::operator>>(cv::Mat&)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|28|undefined reference to `cv::cvtColor(cv::_InputArray const&, cv::_OutputArray const&, int, int)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|29|undefined reference to `cv::GaussianBlur(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_<int>, double, double, int)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|30|undefined reference to `cv::Canny(cv::_InputArray const&, cv::_OutputArray const&, double, double, int, bool)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|31|undefined reference to `cv::imshow(cv::String const&, cv::_InputArray const&)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|32|undefined reference to `cv::waitKey(int)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|35|undefined reference to `cv::VideoCapture::~VideoCapture()'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\essai++\main.cpp|35|undefined reference to `cv::VideoCapture::~VideoCapture()'|
    obj\Debug\main.o||In function `String':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\cvstd.hpp|477|undefined reference to `cv::String::allocate(unsigned int)'|
    obj\Debug\main.o||In function `~String':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\cvstd.hpp|519|undefined reference to `cv::String::deallocate()'|
    obj\Debug\main.o||In function `InputArray':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|63|undefined reference to `vtable for cv::_InputArray'|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|65|undefined reference to `vtable for cv::_InputArray'|
    obj\Debug\main.o||In function `~_InputArray':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|109|undefined reference to `vtable for cv::_InputArray'|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|109|undefined reference to `vtable for cv::_InputArray'|
    obj\Debug\main.o||In function `OutputArray':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|121|undefined reference to `vtable for cv::_OutputArray'|
    obj\Debug\main.o||In function `~_OutputArray':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.hpp|159|undefined reference to `vtable for cv::_OutputArray'|
    obj\Debug\main.o||In function `~Mat':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|532|undefined reference to `cv::fastFree(void*)'|
    obj\Debug\main.o:C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|642|undefined reference to `__sync_fetch_and_add_4'|
    obj\Debug\main.o:C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|643|undefined reference to `cv::Mat::deallocate()'|
    ||=== Build finished: 22 errors, 0 warnings ===|

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par philo22 Voir le message
    J'ai suivi le conseil en déclarant en premier les contours puis en les utilisant. Cependant, ça ne fonctionne toujours pas et le compilateur me renvoie l'erreur suivante:
    Parce que justement la fonction que tu emploies fait partie du namespace C++ cv::findContours. Et celle-ci prend en entrée un objet cv::Mat de l'interface C++, contrairement à son homologue C cvFindContours (qui elle n'acceptera plus les std::vector du C++ ). (Cf. documentation).

    Citation Envoyé par philo22 Voir le message
    Le compilateur renvoie comme erreur:
    Il semble que tu aies oublié de linker la bibliothèque OpenCV à ton projet.
    Voir la partie II-B-2 du tutoriel Installer et configurer une bibliothèque dans un projet.
    Tu auras au minimum à lier :
    • opencv_core
    • opencv_imgproc
    • opencv_highgui
    • opencv_objdetect

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour.
    J'ai réecrit mon code pour qu'il soit écrit complétement en C++:

    Code C++ : 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
    #include <iostream>
    #include <string>                       //  Pour écrire des chaînes
    #include <fstream>                      // Ecrire ou lire des fichiers
    #include <vector>                       // Tableaux dynamiques
    #include "opencv2/core.hpp"
    #include "opencv2/imgproc.hpp"
    #include "opencv2/photo.hpp"
    #include "opencv2/video.hpp"
    #include "opencv2/features2d.hpp"
    #include "opencv2/objdetect.hpp"
    #include "opencv2/calib3d.hpp"
    #include "opencv2/imgcodecs.hpp"
    #include "opencv2/videoio.hpp"
    #include "opencv2/highgui.hpp"
    #include "opencv2/ml.hpp"
     
     
    using namespace std;     // Espaces de noms
    using namespace cv;
     
    int main()               // Fonctions principales
    {
        while (1)         // Boucle infini
        {
     
            Mat oeil ; 
            VideoCapture cap(-1); // On créé un objet grâce à la classe VideoCapture
            if(!cap.isOpened())  // la caméra est elle initialisé ?
            {
                return -1;
            }
     
     
            vector<vector<Point> > Contours ;
            findContours(oeil,Contours,RETR_TREE,CHAIN_APPROX_SIMPLE); // Trouver les contours
     
            // programme
     
            namedWindow("Photo webcam", WINDOW_AUTOSIZE);  // On crée une fenêtre
            moveWindow("Photo webcam", 100, 100);   // Position de la fenêtre
            imshow("Photo webcam", oeil );    // Affichage de l'oeil
            waitKey(2000);// On attend que l'utilisateur appuie sur un bouton, l'argument indique le nombre de ms
            // On libére la mémoire utilisée pour l'image
            cap.release() ;   // On libere la capture de la webcam en mémoire
     
     
        }
        return 0;
    }

    En suivant la documentation OpenCV, j'ai utilisé les fonctions et les méthodes C++.

    Pourtant le compilateur me renvoie l'erreur suivante (il y a 50 erreurs en tout):

    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
    obj\Debug\main.o||In function `main':|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|27|undefined reference to `cv::VideoCapture::VideoCapture(int)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|28|undefined reference to `cv::VideoCapture::isOpened() const'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|32|undefined reference to `cv::VideoCapture::operator>>(cv::Mat&)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|35|undefined reference to `cv::findContours(cv::_InputOutputArray const&, cv::_OutputArray const&, int, int, cv::Point_<int>)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|39|undefined reference to `cv::namedWindow(cv::String const&, int)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|40|undefined reference to `cv::moveWindow(cv::String const&, int, int)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|41|undefined reference to `cv::imshow(cv::String const&, cv::_InputArray const&)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|42|undefined reference to `cv::waitKey(int)'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|44|undefined reference to `cv::VideoCapture::release()'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|23|undefined reference to `cv::VideoCapture::~VideoCapture()'|
    C:\Users\philo\Documents\Programmation\Programmation en C++\oeil4\main.cpp|23|undefined reference to `cv::VideoCapture::~VideoCapture()'|
    obj\Debug\main.o||In function `String':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\cvstd.hpp|477|undefined reference to `cv::String::allocate(unsigned int)'|
    obj\Debug\main.o||In function `~String':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\cvstd.hpp|519|undefined reference to `cv::String::deallocate()'|
    obj\Debug\main.o||In function `InputArray':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|63|undefined reference to `vtable for cv::_InputArray'|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|65|undefined reference to `vtable for cv::_InputArray'|
    obj\Debug\main.o||In function `~_InputArray':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|109|undefined reference to `vtable for cv::_InputArray'|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|109|undefined reference to `vtable for cv::_InputArray'|
    obj\Debug\main.o||In function `OutputArray':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|119|undefined reference to `vtable for cv::_OutputArray'|
    obj\Debug\main.o||In function `~_OutputArray':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.hpp|159|undefined reference to `vtable for cv::_OutputArray'|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.hpp|159|undefined reference to `vtable for cv::_OutputArray'|
    obj\Debug\main.o||In function `~Mat':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|532|undefined reference to `cv::fastFree(void*)'|
    obj\Debug\main.o:C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|642|undefined reference to `__sync_fetch_and_add_4'|
    obj\Debug\main.o:C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|643|undefined reference to `cv::Mat::deallocate()'|
    obj\Debug\main.o||In function `OutputArray<cv::Point_<int> >':|
    C:\Program Files\CodeBlocks\opencv\build\include\opencv2\core\mat.inl.hpp|131|undefined reference to `vtable for cv::_OutputArray'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x8)||undefined reference to `cv::_InputArray::getMat(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0xc)||undefined reference to `cv::_InputArray::getUMat(int) const'|
    :main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x10)||undefined reference to `cv::_InputArray::getMatVector(std::vector<cv::Mat, std::allocator<cv::Mat> >&) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x14)||undefined reference to `cv::_InputArray::getUMatVector(std::vector<cv::UMat, std::allocator<cv::UMat> >&) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x18)||undefined reference to `cv::_InputArray::getGpuMat() const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x1c)||undefined reference to `cv::_InputArray::getOGlBuffer() const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x20)||undefined reference to `cv::_InputArray::kind() const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x24)||undefined reference to `cv::_InputArray::dims(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x28)||undefined reference to `cv::_InputArray::cols(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x2c)||undefined reference to `cv::_InputArray::rows(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x30)||undefined reference to `cv::_InputArray::size(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x34)||undefined reference to `cv::_InputArray::sizend(int*, int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x38)||undefined reference to `cv::_InputArray::sameSize(cv::_InputArray const&) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x3c)||undefined reference to `cv::_InputArray::total(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x40)||undefined reference to `cv::_InputArray::type(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x44)||undefined reference to `cv::_InputArray::depth(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x48)||undefined reference to `cv::_InputArray::channels(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x4c)||undefined reference to `cv::_InputArray::isContinuous(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x50)||undefined reference to `cv::_InputArray::isSubmatrix(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x54)||undefined reference to `cv::_InputArray::empty() const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x58)||undefined reference to `cv::_InputArray::copyTo(cv::_OutputArray const&) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x5c)||undefined reference to `cv::_InputArray::copyTo(cv::_OutputArray const&, cv::_InputArray const&) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x60)||undefined reference to `cv::_InputArray::offset(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x64)||undefined reference to `cv::_InputArray::step(int) const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x70)||undefined reference to `cv::_OutputArray::fixedSize() const'|
    obj\Debug\main.o:main.cpp:(.rdata$_ZTVN2cv17_InputOutputArrayE[vtable for cv::_InputOutputArray]+0x74)||undefined reference to `cv|
    ||More errors follow but not being shown.|
    ||Edit the max errors limit in compiler options...|
    ||=== Build finished: 50 errors, 0 warnings ===|
    Je comprends pas pourquoi il y a écrit "undefined reference".

    Quant à la bibliothéque OpenCV, je l'ai bien intégré à code blocks ce qui fait que je comprends pas l'erreur.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par philo22 Voir le message
    Quant à la bibliothéque OpenCV, je l'ai bien intégré à code blocks ce qui fait que je comprends pas l'erreur.
    Tu en es bien sûr ? Cela concerne les troisième et quatrième images de la partie.
    Aussi, as-tu bien pris les bonnes lib ? Genre 32/64 bits ou VS/Mingw...

    En ce qui concerne le code, pour rester portable, on préfèrera inclure les fichiers entre < ... > : #include <opencv2/core.hpp> et désigner le bon dossier dans les paramètres du projet (Par contre je n'ai pas ces fichiers dans les dossiers désignés mais un dossier en-dessous, dans leur module respectif. )
    Et mets la création de l'objet VideoCapture en dehors de la boucle, comme montré dans l'exemple.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Merci de vos conseils pour la clarté du code.

    Je suis d'accord, il semblerait que la bibliothéque OpenCV soit mal installée sur mon ordinateur. Cependant, j'ai du mal à comprendre car j'ai réussi à créer un programme récupérant l'image de la webcam en utilisant openCV et ce programme fonctionnait.

    La bibliothéque que j'ai téléchargée est la version 3.0.0 qui est encore une bêta. Peut être que mes difficultés viennent de là ?

    Merci d'avance

  8. #8
    Invité
    Invité(e)
    Par défaut
    Je viens de télécharger cette version beta, et comme les version précédentes, elle ne contient que les builds pour Microsoft Visual, mais pas MinGW.
    As-tu donc effectué la génération pour MinGW qu'utilise Code::Blocks ? Si non, et si tu essais d'utiliser les fichiers des dossiers vcxx, il est normal d'avoir ces erreurs.

    En ce qui concerne le programme qui fonctionnait, j'imagine qu'il était codé avec l'interface C. Cela fonctionne car l'ABI C est standardisée, elle est la même pour tous les compilateurs, mais ce n'est pas le cas en C++.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour, merci pour la réponse et désolé du temps que j'ai mis pour répondre.
    Merci pour les conseils car cette fois je pense que c'est bon, openCV est bien installé.
    Cependant, tout n'est pas parfait.
    Maintenant,chaque fois que je compile un programme utilisant la librairie openCV, le compilateur ne dit rien (il n'y a aucune erreur) cependant quand le programme se lance, il y a une erreur de type 0xc0000005 et donc le programme ne fonctionne pas.
    Je ne comprends pas l'erreur.
    J'ai utilisé le debuggeur intégré à codeblocks. Il me signale une erreur de type SIGSEGV.
    J'ai essayé des programmes simples avec openCV et j'ai essayé des programmes tout fait sur internet ou dans la documentation et à chaque fois j'ai une erreur de segmentation.
    Quand je n'utilise pas opencv, mes programmes fonctionnent normalement.
    Merci d'avance

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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