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 :

cvSave sur un objet


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Par défaut cvSave sur un objet
    bonjour tout le monde,
    je travaille effectivement sur l'affichage d'une image . j'ai détecté le visage
    et je l'affiche sur un window .je vais enregistrer ce dernier dans un fichier a part
    pour cela j'utilise la commande cvsave:
    cvSave( const char* filename, const void* struct_ptr,const char* name=NULL,
    const char* comment=NULL, CvAttrList attributes=cvAttrList())

    mais à l'exécution un message d'erreur s'est affiché:too few arguments pour la fonction `cvAttrList'
    svp aider moi pour résoudre ce problème.
    et merci

  2. #2
    Membre éprouvé Avatar de hunta_kirua
    Profil pro
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Par défaut
    Bonjour,

    Peux-tu mettre la portion de code concerné stp ? Ca sera plus facile pour t'aider.

    A+,

    Hunta

  3. #3
    Membre éclairé 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
    Par défaut
    Si tu veux enregistrer une image, passe plutot par
    cvSaveImage("img.bmp", img); // ou jpeg etc...

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Par défaut cvsave un objet
    bonjour
    merci pour votre aide,voici mon code
    #include <stdlib.h>
    #include <stdio.h>
    #include <cv.h>//"cv.h" pour gérer un objet "image",
    #include <highgui.h> //pour le charger depuis un fichier et l'afficher.
    #include <cxcore.h>

    void detect_and_draw( IplImage* image );
    const char* cascade_name =
    "C:/ProgramFiles/OpenCV/data/haarcascades/haarcascade_frontalface_alt.xml";
    /* "haarcascade_profileface.xml";*/

    const char* imen_project ="C:\Documents and Settings\HP\Bureau";


    int main(int argc, char *argv[])
    {
    //initialisation;

    IplImage* img = 0;
    int l,level = 4;
    int height,width,channels;
    int scale;
    //CvScalar scalaire;

    int flip=0;
    int seuil=127;
    int x,y;
    // chargement de l'image;
    img=cvLoadImage("ko.jpg",1);
    detect_and_draw(img);

    // affichage;

    cvNamedWindow("face detect", CV_WINDOW_AUTOSIZE);
    cvShowImage("face detect", img);
    cvMoveWindow("face detect", 0, 0);

    img->width &= -(1<<level);
    img->height &= -(1<<level);
    printf("Processing a %dx%d image ",height,width);

    cvWaitKey(0);

    cvDestroyWindow("face detect");

    cvReleaseImage(&img);

    return 0;
    }
    void detect_and_draw( IplImage* img )
    {
    CvRect* r;
    static CvMemStorage* storage = 0;
    static CvHaarClassifierCascade* cascade = 0;
    IplImage* faceimg ;
    int scale = 1;
    int i;


    CvPoint pt1, pt2;
    cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );
    if( !cascade )
    {
    fprintf( stderr, "ERROR: Could not load classifier cascade\n" );
    return;
    }
    storage = cvCreateMemStorage(0);
    cvNamedWindow( "face", 1 );
    cvClearMemStorage( storage );
    if( cascade )
    {
    // Detect the objects and store them in the sequence

    CvSeq* faces = cvHaarDetectObjects( img, cascade, storage, 1.1, 2, CV_HAAR_DO_CANNY_PRUNING, cvSize(60, 60) );

    // Loop the number of faces found.
    for( i = 0; i < (faces ? faces->total : 0); i++ )
    {
    // Create a new rectangle for drawing the face
    CvRect* r = (CvRect*)cvGetSeqElem( faces, i );


    cvSetImageROI( img, cvRect(r->x*scale,r->y*scale,r->width*scale,r->height*scale) );

    faceimg=cvCreateImage(cvSize(r->width*scale,r->height*scale),img->depth,img->nChannels);

    cvCopyImage(img,faceimg);
    cvNamedWindow("face detect", 1);
    cvShowImage("face detect", faceimg);
    cvResetImageROI(img);

    // Find the dimensions of the face,and scale it if necessary
    pt1.x = r->x*scale;
    pt2.x = (r->x+r->width)*scale;
    pt1.y = r->y*scale;
    pt2.y = (r->y+r->height)*scale;


    // Draw the rectangle in the input image

    cvRectangle( img, pt1, pt2, CV_RGB(255,0,0), 3, 80, 0 );

    cvSave(imen_project, faceimg ,0,0,cvAttrList());




    }
    }

    // Show the image in the window named “result”
    cvShowImage( "face", img );
    //IplROI roi = cvRectToROI(&r

    // Release the image created.
    cvReleaseImage( &faceimg );
    cvReleaseImage( &img );
    }


    donc j'utilise cvsave pour enregistrer le visage détecté comme étant une image dans un fichier
    et merci une autre fois

  5. #5
    Membre éprouvé Avatar de hunta_kirua
    Profil pro
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Par défaut
    Re,

    Comme le dit très justement gassi64, il serait peut-être plus judicieux d'utiliser la fonction cvSaveImage dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cvSaveImage("imen_project.bmp",faceimg);
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cvSave(imen_project, faceimg ,0,0,cvAttrList());
    Si tu tiens absolument à utiliser cvSave, dis-le moi, j'y regarderai mieux.

    A+,

    Hunta

  6. #6
    Membre éclairé 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
    Par défaut
    (Quand tu aura résolu ton problème, stp expliques moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    img->width &= -(1<<level);
    C'est fabuleusement incompréhensible pour moi !)

Discussions similaires

  1. vector de pointeurs sur des objet
    Par jean-bobby dans le forum SL & STL
    Réponses: 26
    Dernier message: 06/08/2004, 14h54
  2. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51
  3. pointeur multiple sur un objet
    Par Arnaud-h dans le forum C++Builder
    Réponses: 9
    Dernier message: 02/06/2004, 11h33
  4. [debutant] Contraintes d'intégrité définies sur un objet
    Par maysa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/05/2004, 14h57
  5. Requêtes : recherche de maxi sur plusieur Objet
    Par pertuis dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/03/2004, 15h28

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