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 :

Inversion de l'image (vidèo) après traitement


Sujet :

OpenCV

  1. #1
    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 Inversion de l'image (vidèo) après traitement
    Bonjour à tous,

    J'effectue un traitement sur un flux video et l'image recupérée après le traitement est retournée (tête en bas). Quelqu'un sait d'où pourrait venir ce problème ?

    D'avance merci

  2. #2
    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
    Je travaille aussi sur de la video, et cela m'arrive selon les traitements et cela reste pour l'instant assez obscures... quelles sont tes traitements ? Y'a t'il de la conversion en niveau de gris ? Si oui quelle fonction utilises tu ?
    J'ai pu resoudre mes problemes en changeant ma fonction de conversion d'image couleur en niveaux de gris
    cvCvtColor(image, m_grayImage, CV_BGR2GRAY;
    =>
    cvConvertImage(image, m_grayImage, 1);
    A approfondir.
    Voila

  3. #3
    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
    Pour etre plus clair, openCV lit les format .AVI upside down par default , il est donc necessaire d'effectué un flip pour la converison niveau de gris
    dans cvConvertImage, le 3 eme arguement représente CV_CVTIMG_FLIP qui flip l'image.

    Voila
    Quand a moi je ne trouve pas de fonction pour effectuer une rotation d'image ( d'angle quelqconque style rotate de MATLAB).....

  4. #4
    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 le moment,

    j'ai :

    cvCvtColor(img,tmp,CV_RGB2GRAY);
    cvConvert(tmp,images(current));

    et la fonction cvConvertImage de HighUi (et pas cv) a résolu le problème merci

  5. #5
    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

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    La rotation est du a l'origine de l'imageIl faut se remetrre a l'origine
    voici un exemple:

    m_grayImage->origin = Image->origin;
    Image->origin = m_grayImage->origin;

    ca depend de ta declaration

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 24
    Points
    24
    Par défaut Probleme de rendu au niveau du gris.
    Bonjour à tous.
    Je travail actuelement sur un projet de robot suiveur de lazer, et je suis bloqué sur une fonction opencv : cvCvtColor(...,...,...)
    Je tiens à préciser que je travail sur LINUX.

    En me balladant sur internet, j'ai compris que le premier argument correspond à l'image de départ, que le second argument correspond à l'image destinataire, et que le dernier argument correspond aux couleurs.

    Voila ce que j'ai pour le moment :



    #ifdef _CH_
    #pragma package <opencv>
    #endif

    #ifndef _EiC
    #include "cv.h"
    #include "highgui.h"
    #include <ctype.h>
    #include <stdio.h>
    #endif

    int main( int argc, char** argv )
    {


    CvCapture* capture = 0; //Initialisation de la cam.
    capture = cvCaptureFromCAM( 0 );

    if( !capture ) //Si erreur lors de l'initialisation de la Cam.
    {
    fprintf(stderr,"Could not initialize capturing...\n");
    cvWaitKey(0); //fermeture de la fenetre
    return -1;
    }

    //Fenetre de visualisation de la CAM originale :

    cvNamedWindow( "capture", 0 );
    //Fenetre de visualisation de la CAM au niveau du gris.
    cvNamedWindow( "captureGrey", 0);


    for( ;; )
    {
    IplImage* frame = 0;
    IplImage* frameGrey = 0;
    int i;

    frame = cvQueryFrame( capture ); //On recupere l'image original

    //Recupere l'image situé dans "frame" puis la ré-introduit dans "frameGrey" en Noir et Blanc:

    cvCvtColor(frame,frameGrey,CV_RGB2GRAY);

    if( !frame )
    break;


    cvShowImage("capture", frame ); //Affichage de l'image recuperée.
    cvShowImage("captureGrey", frameGrey ); //Affiche de l'image modifiée.
    cvWaitKey(10); //Si argument = 0, alors attente qu'une touche soit préssée, ici fontionnement en mode CAM.

    }

    cvReleaseCapture( &capture );
    cvDestroyWindow("capture"); //Libère l'espace mémoire utilisé.
    cvDestroyWindow("captureGrey"); //Libère l'espace mémoire utilisé.

    return 0;
    }

    #ifdef _EiC
    main(1,"laplace.c");
    #endif




    Cela ne fonctionne pas et un message d'erreur apparait dans la console. L'aquisition de l'image fonctionne bien, car en enlevant : cvCvtColor(frame,frameGrey,CV_RGB2GRAY);
    Je récupère bien une fenêtre avec la visualisation de la webcam.

    Quelqu'un pourrait-il m'éclairer?
    Merci.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Bonjour,
    La réponse est un peut tard, mais si même tu t'en servira pas d'autre il vont l'utiliser, j'espère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                    frame_copy = cvCreateImage( cvSize(frame->width,frame->height), IPL_DEPTH_8U, frame->nChannels );
                if( frame->origin == IPL_ORIGIN_TL )
                    cvCopy( frame, frame_copy, 0 );
                else
                    cvFlip( frame, frame_copy, 0 );
    Est ensuite tu utilise frame_copy pout le reste de ton programme

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

Discussions similaires

  1. Enregistrement automatique d'image après traitement
    Par laulau301090 dans le forum Images
    Réponses: 9
    Dernier message: 07/03/2013, 13h28
  2. Afficher image après traitement
    Par Blaise dans le forum Langage
    Réponses: 1
    Dernier message: 23/06/2012, 22h04
  3. Traitement d'images vidéo
    Par snoopp dans le forum Débuter
    Réponses: 6
    Dernier message: 18/04/2011, 20h47
  4. Sauvegarde d'une image après traitement
    Par Nates dans le forum Images
    Réponses: 4
    Dernier message: 25/06/2008, 15h39
  5. Programme qui créer des images d'après une vidéo
    Par snoopy69 dans le forum Vidéo
    Réponses: 7
    Dernier message: 03/04/2006, 08h33

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