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 :

Affichage d'une matrice int convertie en Mat


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de azassma
    Femme Profil pro
    Ph.D - Computer Vision
    Inscrit en
    Avril 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ph.D - Computer Vision
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 159
    Par défaut Affichage d'une matrice int convertie en Mat
    Bonsoir,

    S'il vous plait, j'ai une matrice d'entier et je veux la convertir en IplImage et j'utilise le code au-dessous, cependant juste le coin de l'image s'affiche et pas l'image entière.
    imgM_FS est une matrice contenant des entières positifs et négatifs

    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
     
        vector<vector <int> > imgM_FS(dim, vector<int>(dim));
     
        Mat mat(dim,dim,CV_8U);
     
        for(int i = 0;i < dim;i++)
            for(int j = 0;j < dim;j++)
                mat.at<uchar>(i,j) = imgM_FS[i][j];
     
        CvMat p = mat;
        CvMat *pp = cvCreateMat(dim,dim,CV_8U);
        pp = &p;
     
        IplImage *in=cvCreateImage(cvGetSize(pp),IPL_DEPTH_8U,1);
        cvGetImage(pp,in);
     
        cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE );
        cvShowImage( "Example1", in );
        cvWaitKey(0);
        cvReleaseImage( &in );
        cvDestroyWindow( "Example1" );
    Si vous pouvez m'aider? Merci beaucoup

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut
    Quel est le format de la matrice d'entrée : le vector<vector> ou le cv::Mat ?

  3. #3
    Membre confirmé Avatar de azassma
    Femme Profil pro
    Ph.D - Computer Vision
    Inscrit en
    Avril 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ph.D - Computer Vision
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 159
    Par défaut
    C'est le vector<vector <int> >

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2011
    Messages : 147
    Par défaut
    Bonjour,

    Certaines choses me posent probleme dans ton code.

    Ligne 11, tu crees une matrice, aloue la memoire, et ligne 12 tu assignes le pointeur sur une autre matrice.
    Tu perds donc la premiere matrice dans la nature.

    Ligne 8 : Tu convertis des int en char sans aucune precaution. En particulier tu dis avoir des entier negatif et tu les convertis en vrac vers des unsigned.

    Ensuite, pourquoi ne pas creer directement une ipl image et la remplir avec ton vecteur de vecteurs ?

  5. #5
    Membre confirmé Avatar de azassma
    Femme Profil pro
    Ph.D - Computer Vision
    Inscrit en
    Avril 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ph.D - Computer Vision
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 159
    Par défaut
    Merci mr sangoma
    Pour la ligne 8 ça ne pose pas de problèmes, j'ai fait des tests et cela donne les bonnes int
    S'il vous plait, comment je peut donner à IplImage des entières directement, parce que la façon que je connais c'est de passer par Mat et CvMat??
    Merci

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2011
    Messages : 147
    Par défaut
    Re,

    Bon, selon ton premier message, tu as des entiers negatif et positif. Si tu les stockes dans un unsigned char, ils vont tous devenir positif. Et tous les entier > a 255 vont produire des resultats etranges.

    Je ne retrouve plus les vielles doc d'opencv.
    Mais tu peux regarder ce lien : http://osdir.com/ml/lib.opencv/2006-03/msg00914.html
    La macro la plus simple est : CV_IMAGE_ELEM( image_header, elemtype, y, x_Nc )

    Sinon, tu devrais penser a utiliser des cv::Mat au lieu d'iplimage et cvMat. Les version 2.x.x et 3.x.x sont basees sur les Mat, les IplImage sont deprecated.

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

Discussions similaires

  1. Problème d'affichage d'une matrice
    Par zicoadis dans le forum Débuter
    Réponses: 4
    Dernier message: 26/01/2008, 17h36
  2. Affichage d'une matrice dans un edit
    Par harris_macken dans le forum Interfaces Graphiques
    Réponses: 15
    Dernier message: 22/11/2007, 21h35
  3. Réponses: 5
    Dernier message: 10/11/2007, 10h20
  4. [TP] Affichage d'une matrice
    Par williamdunord dans le forum Turbo Pascal
    Réponses: 19
    Dernier message: 28/05/2007, 20h46
  5. Affichage d'une matrice
    Par ypascal dans le forum Pascal
    Réponses: 7
    Dernier message: 24/04/2006, 20h03

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