matrice en c++ (avec openscenegraph)
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

matrice en c++ (avec openscenegraph)



  1. #1
    inviteb8477130

    matrice en c++ (avec openscenegraph)


    ------

    Bonjour,

    Je travaille sur un projet de vision par ordinateur en utilisant la librairie openscenegraph (osg). A l'aide d'une camera fixe, je prends n acquisitions d'images d'un marqueur en déplacement. Pour chaque acquisition, la librairie osg me donne la matrice de rotation du marqueur par rapport à ma caméra. Mon problème est que je n'arrive pas à récupérer mes n matrices de rotation (après la boucle), car je m'en sers dans la suite.

    j'ai pensé à passer par des structures, mais je ne sais pas trop comment manipuler toutes ces notions en c++ (sous matlab c plus simple).Auriez vous une idée?en gros, je souhaite obtenir la rotation qui correspond à la i eme acquisition!!

    En vous remerciant d'avance!!

    H.

    -----

  2. #2
    bzh_nicolas

    Re : Urgent!!!! matrice en c++ (avec openscenegraph)

    Rempli un tableau avec la matrice de rotation donnée en retour. Si tu sais combien de matrice tu auras, utilise un tableau de taille fixe, sinon passe par un tableau alloué dynamiquement.
    Plus souple : tu peux aussi utilisé les listes chainées.

  3. #3
    inviteb8477130

    Re : Urgent!!!! matrice en c++ (avec openscenegraph)

    Merci bcp de ta réponse!
    En fait, j'ai pensé aussi au tableau. Mais le problème c'est que je ne vois pas comment accéder à une matrice spécifique. A chaque acquisition, j'ai une matrice de rotation 3x3. donc au bout de n acquisitions, n matrices 3x3. En remplissant ainsi mon tableau avec ces matrices, j'aurais un tableau de taille 3nx3. Je ne vois pas comment écrire l'algo qui me permet d'extraire la ième matrice.

    Les listes chainées, je ne connais pas trop. (je ne suis pas douée en programmation ..malheureusement!)

    H.

  4. #4
    Fred des montagnes

    Re : Urgent!!!! matrice en c++ (avec openscenegraph)

    Salut,

    Non le but c'est d'avoir un tableau en 3 dimensions, donc tu auras un tableau n x 3 x 3.

  5. A voir en vidéo sur Futura
  6. #5
    inviteb8477130

    Re : Urgent!!!! matrice en c++ (avec openscenegraph)

    En fait, comme je manipule des matrices, je souhaite savoir s'il y'a moyen de sauvegarder mes matrices et que ça garde les propriétés de matrices (pratique pour osg ART)...est ce qu'il est possible de faire cela avec un fichier .csv??

    merci!

  7. #6
    inviteb8477130

    Re : Urgent!!!! matrice en c++ (avec openscenegraph)

    Autrement, pourriez-vous svp me dire comment écrire ce programme (qui en matlab) en c++:

    A=[1 1 1; 2 2 2; 3 3 3];
    B=[];
    for i=1:3
    B=[B;A];
    end

    qui me permet d'avoir en résultat:
    B=[ 1 1 1
    2 2 2
    3 3 3
    1 1 1
    2 2 2
    3 3 3
    1 1 1
    2 2 2
    3 3 3]


    Merci de votre réponse!

  8. #7
    Fred des montagnes

    Re : Urgent!!!! matrice en c++ (avec openscenegraph)

    Salut,

    Es-tu obliger de concaténer tes matrices?? Au-lieu d'avoir une matrice qui contient les autres en 2D (matrice 3nx3) tu peux avoir une matrice en 3D (matrice nx3x3):

    B =[A0, A1, ..., An]

    B=[

    [111
    222
    333]

    [444
    555
    666]
    ...
    ...

    ]

    Je regarde et je test un petit bout de code pour faire ça. Tu reçois les données sous quelle forme (en C/C++) ?? directement dans un tableau de valeurs en 2D?? ou il faut que tu le remplisse toi-même?

  9. #8
    inviteb8477130

    Re : Urgent!!!! matrice en c++ (avec openscenegraph)

    Merci de votre réponse!! alors mon but est de pouvoir récupérer des matrices osg 3x3 que je calcule à l'intérieur d'une boucle, ailleurs. Mon idée était de pouvoir les stocker dans une seule matrice. Ma question précédente est en fait une version banalisée de mon pb. J'ai réussi à faire (avec l'aide d'un ami) une concaténation de deux matrice dans un tableau (en c++). Mais je me suis rendu compte après que dans mon cas il me faut un stockage dynamique, à chaque acquisition stocker la rotation dans ma grande matrice!

    Pour que vs ayez une idée plus exacte de mon pb, voici un bout de mon code:

    f (calibrage) {

    getch();

    int nb_acq=10; // Ici, je fixe le nombre d'acquisitions à 10 par exemple


    for (int i =0; i< nb_acq; i++){

    CaptureCalibration(img, key,img_4ch,&viewer,pImage,cap ture); // ici c une fonction de la librairie openscenegraph osg qui me permet de prendre des captures d'images //via une caméra
    osg::Matrix rotation = osg::Matrix(); // initialisation de la matrice rotation (osg pour l'étape i)
    rotation.makeRotate(g_marker->getAttitude()); // je remplis ma matrice avec l'orientation fournit par osg


    //je souhaite donc faire la concaténation au fur et à mesure ici!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!

    std::cout << "Press key to continue" << std::endl;
    getch();
    }

    Merci beaucoup de m'aider, je dois livrer mes résultats très prochainement et je suis encore bloquée là-dessus!!!
    H.

  10. #9
    Fred des montagnes

    Re : Urgent!!!! matrice en c++ (avec openscenegraph)

    Euh... alors je connais pas trop osg, et sourtout ce type "Matrix", mais j'ai toujours une question: pourquoi la concaténation?? Et pas l'ajout d'une entrée dans un tableau 3D (en tableau de matrice en quelque sorte)?
    Dernière modification par Fred des montagnes ; 18/04/2011 à 10h30.

  11. #10
    inviteb8477130

    Re : Urgent!!!! matrice en c++ (avec openscenegraph)

    C'est plutôt un stockage de matrices (que concaténation en effet!!).

  12. #11
    Fred des montagnes

    Re : Urgent!!!! matrice en c++ (avec openscenegraph)

    Si tu peux directement travailler avec ton type "Matrix". Alors le plus simple en c++ pour stocker quelque chose c'est d'utiliser les "vector". Pour cela tu dois importer la librairie standard: #include <vector>.

    Code:
    vector <osg::Matrix> TableauDeMatrice;
    
    f (calibrage) {
    
    getch();
    
    int nb_acq=10; // Ici, je fixe le nombre d'acquisitions à 10 par exemple
    
    
    for (int i =0; i< nb_acq; i++){
    
    CaptureCalibration(img, key,img_4ch,&viewer,pImage,cap ture); // ici c une fonction de la librairie openscenegraph osg qui me permet de prendre des captures d'images //via une caméra
    osg::Matrix rotation = osg::Matrix(); // initialisation de la matrice rotation (osg pour l'étape i)
    rotation.makeRotate(g_marker->getAttitude()); // je remplis ma matrice avec l'orientation fournit par osg
    
    
    //je souhaite donc faire la concaténation au fur et à mesure ici!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!
    
    TableauDeMatrice.push_back(rotation); //ajoute la matrice i dans le tableau
    
    MaMatrix = TableauDeMatrice.at(i); //retourne la matrice numéro i
    
    std::cout << "Press key to continue" << std::endl;
    getch();
    }
    Je tiens à préciser que j'ai pas testé vu que je n'ai pas OSG.

Discussions similaires

  1. Trouver matrice semblable avec matrice de passage
    Par ichigo01 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 25/08/2010, 06h57
  2. Matrice avec valeur propre multiple
    Par invitec2c6cfd4 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 07/06/2010, 00h04
  3. Equation linéaire avec matrice
    Par invitef8037e5d dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 26/09/2008, 08h37
  4. Probleme avec matrice
    Par invite006927c4 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 06/03/2007, 18h06
  5. endomorphisme avec matrice et bases
    Par invitecc2a5165 dans le forum Mathématiques du supérieur
    Réponses: 10
    Dernier message: 02/03/2007, 14h14