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 :

Erreur avec cvMatchShapes


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut Erreur avec cvMatchShapes
    Bonjour,

    Je débute avec OpenCV et je voudrais utiliser la fonction MatchShapes. D'après la documentation, les 2 premiers arguments peuvent être des images en niveau de gris cependant j'obtiens l'erreur suivante (que je ne comprends pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file cxcore/cxarray.cpp, line 2470
    terminate called after throwing an instance of 'cv::Exception'
    Voici le code (pourtant tout simple) qui provoque l'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
     
    #include <iostream>
    #include <opencv/cv.h>
    #include <opencv/cvaux.h>
    #include <opencv/cxcore.h>
    #include <opencv/highgui.h>
     
    using namespace cv;
     
    int main(){
    std::string s1("Base/001.jpg");
    std::string s2("Base/008.jpg");
    Mat img1 = imread(s1);
    Mat img2 = imread(s2);
    if (!img1.data || !img2.data)
    {
    	std::cout << "Problem with pictures" << std::endl;
    	std::exit(-1);
    }
    cv::Mat imgG1, imgG2;
    cv::cvtColor(img1, imgG1, CV_BGR2GRAY);
    cv::cvtColor(img2, imgG2, CV_BGR2GRAY);
     
    double lol = cvMatchShapes(&imgG1, &imgG2, CV_CONTOURS_MATCH_I1);
    std::cout << "HU CMP1\t\t:\t" << lol << std::endl;
    return 0;
    }
    Si quelqu'un pouvait me débloquer

  2. #2
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    les deux cvtColor fonctionnent ?

    ce qui me dérange c'est la déclaration de matrice au début
    Mat img1 = imread(s1);
    Mat img2 = imread(s2);

    utilise comme tu l'as fait plus bas les matrice d'openCV

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut
    Bonjour,

    Les deux cvtColor fonctionnent (j'ai vérifié avec un imshow).

    Je n'arrive pas à comprendre votre dernière phrase.

  4. #4
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    cv::Mat imgG1, imgG2;

    des matrices déclaré à l'aide de la librairie openCV.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut
    En modifiant de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Mat img1, img2;
    img1 = imread(s1);
    img2 = imread(s2);
    Rien ne change... j'ai toujours l'exception.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut J'ai compris
    En fait, l'erreur était toute simple : J'ai mélangé l'ancienne et la nouvelle version de OpenCV. En utilisant cv::matchShapes au lieu de cvMatchShapes, ça marche

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

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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