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 :

Rotation d'image


Sujet :

OpenCV

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 46
    Points
    46
    Par défaut Rotation d'image
    Je n'arrive pas a trouver de fonction sous openCV effectuant une simple rotation d'image? En existe t'il une (se qui semblerait plus que normal )
    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Pour ton problème de rotation :

    cv2DRotationMatrix() and cvWarpAffine()
    (2×3 transformation matrix pour le premier notamment)

    car dans tous les cas, il faudra que tu écrives ta rotation sous la forme de matrice de transformation affine

  3. #3
    Membre actif Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Points : 230
    Points
    230
    Par défaut
    Toujours bloqué sur ma rotation, j'ai trouvé ce code qui fonctionne très bien :
    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
     
    #include "cv.h"
    #include "highgui.h"
    #include "math.h"
    int main( int argc, char** argv )
    {
        IplImage* src = cvLoadImage("lena.jpg", 1);    
        IplImage* dst = cvCloneImage( src );
     
        int delta = 1;
        int angle = 0;
     
        cvNamedWindow("src", 1);
        cvShowImage("src", src);
     
        for(;;)
        {
            float m[6];
            CvMat M = cvMat(2, 3, CV_32F, m);
            int w = src->width;
            int h = src->height;
     
            m[0] = (float)(cos(angle*2*CV_PI/180.));
            m[1] = (float)(sin(angle*2*CV_PI/180.));
            m[3] = -m[1];
            m[4] = m[0];
            m[2] = w*0.5f;  
            m[5] = h*0.5f;  
     
            cvGetQuadrangleSubPix( src, dst, &M);
            cvNamedWindow("dst", 1);
            cvShowImage("dst", dst);
            if( cvWaitKey(1) == 27 )
                break;
            angle =(int)(angle + delta) % 360;
        }     
        return 0;
    }
    C'est super mais alors quand je veux en faire une fonction en stabilisant à un angle donné, j'arrive à un résultat abérant où l'image est à moitié coupée

  4. #4
    Membre actif Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Points : 230
    Points
    230
    Par défaut
    Enfin !!! Wahouuu !!!

    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
     
    void RotationImage(IplImage* iBuf, IplImage** oBuf, int angle)
    {
        IplImage* lTamp = cvCloneImage(iBuf);
        float lRotateValues[6];
        lRotateValues[0] = (float)(cos(angle*CV_PI/180.));
        lRotateValues[1] = (float)(sin(angle*CV_PI/180.));
        lRotateValues[3] = -lRotateValues[1];
        lRotateValues[4] =  lRotateValues[0];
        lRotateValues[2] = iBuf->width  *0.5f;  
        lRotateValues[5] = iBuf->height *0.5f; 
        CvMat lRotateMatrix = cvMat(2, 3, CV_32F, lRotateValues);
        cvGetQuadrangleSubPix(iBuf,lTamp,&lRotateMatrix); 
        *oBuf = lTamp;
    }

Discussions similaires

  1. rotation d'images
    Par philippe du web dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 02/05/2007, 16h01
  2. Rotation d'image dans un état
    Par Papapetch dans le forum IHM
    Réponses: 3
    Dernier message: 10/06/2006, 18h02
  3. Rotation d'image (matrice)
    Par AsmBoy dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 16/01/2006, 07h49
  4. Faire une rotation d'image
    Par sozie9372 dans le forum 2D
    Réponses: 6
    Dernier message: 30/11/2005, 22h40
  5. [Image]Rotation d'image
    Par psychomatt dans le forum 2D
    Réponses: 6
    Dernier message: 16/12/2004, 20h18

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