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 :

Passer en paramètre un objet


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Par défaut Passer en paramètre un objet
    bonjour,
    c'est moi aussi avec mes questions banales
    j'ai fais appele à une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALK(pImgT, reacta, pImgI,W);
    où recta c'est de type CvRect.
    maintenant au lieu de CvRect je voudrais faire un autre paramètre qui est un objet déjà dessiné (n'est pas prédéfini en opencv) est ce que je peux faire ça ?

  2. #2
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    il te suffit de changer le prototype de la fonction et tu remplace le cvRect par le nom de la structure de ton objet.

  3. #3
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Par défaut
    je n'ai pas bien compris votre réponse snowpy
    pour dessiner mon objet j'ai fait appèle à cette procedure
    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
    void drawCylinder(double r,double height)
    {
        double x=0,y=0;
        double pre=height/20;
        glPointSize(1);
        glBegin(GL_POINTS);
        for(double z=0;z<=height;z+=pre)
        {
            for(double t=0;t<=PI;t+=PI/20)
            {
                x=r*cos(t);
                y=r*sin(t);
                glVertex3d(x,z-height/2,y);
            }
        }
        glEnd();
        glLoadIdentity();
    }
    et j'ai fais l'appèle comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     drawCylinder(Rect.width/2,Rect.height);
    alors est ce que je fais comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALK(pImgT, drawCylinder(Rect.width/2,Rect.height), pImgI,W);
    pas logique non?

  4. #4
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    c'est quoi ALK ?

  5. #5
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Par défaut
    ALK c'est une procédure qui j'ai programmé en opencv et c++ ( flot optique)
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    	int u, v;
     
    		// parcour T
    		int i, j;
    		for(i=0; i<omega.width; i++)
    		{
    			u = i + omega.x;
     
    			for(j=0; j<omega.height; j++)
    			{
    				v = j + omega.y;
     
    				// X =(u,v,1)
    				SET_VECTOR(X, u, v);
     
    				// Z=W*X
    				cvGEMM(W, X, 1, 0, 0, Z);
     
    				// (u2,v2) appart I.
    				float u2, v2;
     
     
    				GET_VECTOR(Z, u2, v2);
     
     
    				int u2i = cvFloor(u2);
    				int v2i = cvFloor(v2);
     
    				if(u2i>=0 && u2i<pImgI->width && // si pixel appart I.
    					v2i>=0 && v2i<pImgI->height)
    				{
    					pixel_count++;
     
    					//gradient warpé
    					// interpolation.
    					float Ix = interpolate<short>(pGradIx, u2, v2);
    					float Iy = interpolate<short>(pGradIy, u2, v2);
     
    					//  steepest descent 
    					float stdesc[3]; 
    					stdesc[0] = (float)(-v*Ix+u*Iy);
    					stdesc[1] = (float)Ix;
    					stdesc[2] = (float)Iy;
     
    					//intensité par interpolation.
    					float I2 = interpolate<uchar>(pImgI, u2, v2);
     
    					// difference D = T(x)-I(W(x,p)).
    					float D = CV_IMAGE_ELEM(pImgT, uchar, v, u) - I2;
     
    					// mise à jour
    					mean_error += fabs(D);
     
    					// ajouter à matr
    					float* pb = &CV_MAT_ELEM(*b, float, 0, 0);
    					pb[0] += stdesc[0] * D;
    					pb[1] += stdesc[1] * D;
    					pb[2] += stdesc[2] * D;
     
    					// ajouter à Hess.
    					int l,m;
    					for(l=0;l<3;l++)
    					{
    						for(m=0;m<3;m++)
    						{
    							CV_MAT_ELEM(*H, float, l, m) += stdesc[l]*stdesc[m];
    						}
    					}
    				}	
    			}
    		}
    je voudrais maintenant au lieu de travaillé avec omega qui est 2D je le remplace par cylindre 3D

  6. #6
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    ah mais c'est de l'openGL ton truc j'y connais rien en open GL mais ce que je ferais perso, c'est passer un tableau à 3 dimension à drawcylinder (le pointeur en paramètre) et je sauvegarderais le triplet de point et dans alk tu lui fais passer le pointeur. Aucune idée de si il existe une fonction en openGL pour récupérer ca ou un truc du genre. Je peux pas t'aider plus que ca

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/03/2014, 21h51
  2. Réponses: 1
    Dernier message: 03/04/2013, 14h45
  3. [WRS] Passer des paramètres à un objet
    Par Deciprog dans le forum Outils BI
    Réponses: 6
    Dernier message: 14/12/2009, 15h31
  4. Réponses: 4
    Dernier message: 14/09/2006, 12h25
  5. Réponses: 1
    Dernier message: 06/09/2006, 18h11

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