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 :

Probleme de rendu des niveaux de gris


Sujet :

OpenCV

  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut Probleme de rendu des niveaux de 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 :



    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
    #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
    balise code ajouté par mongaulois. Merci d'y faire attention la prochaine fois



    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.

  2. #2
    Membre expérimenté Avatar de Vinsss84
    Profil pro
    Inscrit en
    Février 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2008
    Messages : 175
    Par défaut
    Quel est le message d'erreur apparaissant dans la console?
    Par ailleurs il est bon dans ce genre de cas d'initialiser les IplImage un peu plus précisement (notament pour le nChannels qui peut poser pb lors de l'utilisation de CvCvtColor


    Je testerai qqc de ce type la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     IplImage* frame = 0;	
            int i;
     
            frame = cvQueryFrame( capture );
            IplImage* frameGrey = cvCreateImage(cvGetSize(frame),8,1);

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut Ok
    Merci pour ta réponse vinsss84, je débute dans linux et c'est dur

    Si j'ai bien compris, cela devra donner ca :

    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
    72
    73
    74
     
    #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( ;; )
        {
     
     
            frame = cvQueryFrame( capture );
            IplImage* frameGrey = cvCreateImage(cvGetSize(frame),8,1);
     
     
     
     
            IplImage* frame = 0;	
            int i;
     
            frame = cvQueryFrame( capture );	//On recupere l'image original 
     
    	IplImage* frameGrey = cvCreateImage(cvGetSize(frame),8,1);
     
     //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
    Sinon pour le message d'erreur, j'essaye demain avec ce code et je vous direz si il marche, ou alors je vous direz le message d'erreur.

    Merci encore.

  4. #4
    Membre expérimenté Avatar de Vinsss84
    Profil pro
    Inscrit en
    Février 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2008
    Messages : 175
    Par défaut
    Pas de soucis tiens moi au courant

  5. #5
    Invité de passage
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1
    Par défaut
    Citation Envoyé par Vinsss84 Voir le message
    Pas de soucis tiens moi au courant
    Il est nécessaire de créer l'image au préalable!

    frameNB = cvCreateImage( cvSize(frame->width,frame->height), 8, 1 );


    cvCvtColor(frame,frameNB,CV_BGR2GRAY);

  6. #6
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut Bonjour
    Bonjour,
    Grâce à vos conseils, la vision en Gris marche parfaitement, je vous remercie.
    Heuresement que vous êtes la, parceque notre professeur de TP de nous aide pas beaucoup et à beaucoup de mal avec linux.

    Dje

  7. #7
    Membre expérimenté Avatar de Vinsss84
    Profil pro
    Inscrit en
    Février 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2008
    Messages : 175
    Par défaut
    Citation Envoyé par Vinsss84 Voir le message
    Quel est le message d'erreur apparaissant dans la console?
    Par ailleurs il est bon dans ce genre de cas d'initialiser les IplImage un peu plus précisement (notament pour le nChannels qui peut poser pb lors de l'utilisation de CvCvtColor


    Je testerai qqc de ce type la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     IplImage* frame = 0;	
            int i;
     
            frame = cvQueryFrame( capture );
            IplImage* frameGrey = cvCreateImage(cvGetSize(frame),8,1);

    Il est nécessaire de créer l'image au préalable!

    frameNB = cvCreateImage( cvSize(frame->width,frame->height), 8, 1 );


    cvCvtColor(frame,frameNB,CV_BGR2GRAY);
    Ai-je dit autre chose :o?

Discussions similaires

  1. séparation des niveaux de gris fond/forme
    Par aliben1 dans le forum Images
    Réponses: 1
    Dernier message: 21/06/2013, 15h07
  2. Réglage des niveaux de gris d'une image
    Par mohamine1989 dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 05/04/2013, 21h59
  3. la moyenne des niveaux de gris d'une image
    Par NGeVtC87 dans le forum Images
    Réponses: 7
    Dernier message: 15/03/2012, 23h46
  4. probleme de rendu des anim flash sous firefox
    Par fwebconcept dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 13/08/2008, 14h03
  5. Réponses: 4
    Dernier message: 05/01/2006, 20h29

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