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 :

Reconnaissance de geste dans une vidéo


Sujet :

OpenCV

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut Reconnaissance de geste dans une vidéo
    bonjour,
    je suis en train de développer une application utilisant opencv pour l'interprétation et la reconnaissance des gestes des mains et les traduire sous forme textuelle, svp avez vous une idée comment procéder, y'a t_il un algorithme ou un code disponible que je pourrais l'imiter et le comprendre
    merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Salut

    j'ai fait un mini projet qui fait un peu ça avec opencv, le code est dispo ici : https://github.com/Steren/notouchscreen. As tu un cadre mathématique précis à traduire où est ce que tu pars un peu à l'aventure ?

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    salut,

    merci bien pour votre réponse jblecanard
    moi je m'interresse particulièrement à reconnaitre et interpréter une énoncé d'une personne sourd_muet (langue des signes), qui se place devant un caméra
    si vous avez d'autres idée merci de les communiquer
    voilà mon mail:
    neswebhamrouni@yahoo.fr

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Hello

    Nul besoin de communiquer par email, le forum est fait pour ça ! Tu dois savoir que la reconnaissance d'image et en particulier la reconnaissance de geste sont des choses très difficiles à mettre en place avec une caméra seule. Du reste, celà nécessite une solide expérience à la fois mathématique et de la programmation en général.

    Je pense que tu devrais te tourner vers Kinect et vers les solutions communautaires ouvertes qui permettent d'exploiter ce périphérique : il est particulièrement adapté à l'usage que tu recherches.

    Bon courage !

  5. #5
    Membre confirmé Avatar de highlight
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut
    Jblecanard a raison, le forum est fait pour partager la connaissance pour tout le monde. Effectivement interagir directement via des geste devant une camera 2D est hyper compliqué. Maintenant via la Kinect l'interaction est devenue tres tres facile, je te conseil de t approché plus a OpenNi et voir ce qui est utile pour toi. il y en ai pas mal des applications par la Kinect avec des code sources disponilble.
    Bon courage

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    bonsoir,
    merci bien pour vos réponses et vos interets, j'ai mit @ mail , juste pour m'envoyer des doc qui ne figurent pas sur le net et qui sont supprimés du net,
    merci pour vos conseils, mais moi j'ai débuté avec opencv,j'ai fais la capture et j'ai construit l'histogramme de deux images , et je veux savoir s'ils sont égaux ou non,j'ai utiliser la fonction cvCompareHist(hist,hist2,CV_COMP_BHATTACHARYYA);
    mais elle n'arrive pas à faire la distinction entre les deux images, voilà le code, kk1 peut m'aider svp


    #ifdef _CH_
    #pragma package <opencv>
    #endif

    #ifndef _EiC
    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>

    #endif

    char file_name[] = "b.JPG";
    char file_name2[] = "E.JPG";

    int _brightness = 100;
    int _contrast = 100;

    int hist_size = 64;
    float range_0[]={0,256};
    float* ranges[] = { range_0 };
    IplImage *src_image = 0,*src2=0, *dst_image = 0, *hist_image = 0, *dst_image2 = 0, *hist_image2 = 0;
    CvHistogram *hist, *hist2;
    uchar lut[256], lut2[256];
    CvMat* lut_mat,*lut_mat2;

    /* brightness/contrast callback function */
    void update_brightcont( int arg )
    {
    int brightness = _brightness - 100;
    int contrast = _contrast - 100;
    int i, bin_w;
    float max_value = 0;

    if( contrast > 0 )
    {
    double delta = 127.*contrast/100;
    double a = 255./(255. - delta*2);
    double b = a*(brightness - delta);
    for( i = 0; i < 256; i++ )
    {
    int v = cvRound(a*i + b);
    if( v < 0 )
    v = 0;
    if( v > 255 )
    v = 255;
    lut[i] = (uchar)v;
    }
    }
    else
    {
    double delta = -128.*contrast/100;
    double a = (256.-delta*2)/255.;
    double b = a*brightness + delta;
    for( i = 0; i < 256; i++ )
    {
    int v = cvRound(a*i + b);
    if( v < 0 )
    v = 0;
    if( v > 255 )
    v = 255;
    lut[i] = (uchar)v;
    }
    }

    cvLUT( src_image, dst_image, lut_mat );
    cvShowImage( "image", dst_image );

    cvCalcHist( &dst_image, hist, 0, NULL );
    cvZero( dst_image );
    cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 );
    cvScale( hist->bins, hist->bins, ((double)hist_image->height)/max_value, 0 );
    /*cvNormalizeHist( hist, 1000 );*/

    cvSet( hist_image, cvScalarAll(255), 0 );
    bin_w = cvRound((double)hist_image->width/hist_size);

    for( i = 0; i < hist_size; i++ )
    cvRectangle( hist_image, cvPoint(i*bin_w, hist_image->height),
    cvPoint((i+1)*bin_w, hist_image->height - cvRound(cvGetReal1D(hist->bins,i))),
    cvScalarAll(0), -1, 8, 0 );

    cvShowImage( "histogram", hist_image );
    }





    void update_brightcont2( int arg )
    {
    int brightness = _brightness - 100;
    int contrast = _contrast - 100;
    int i, bin_w;
    float max_value = 0;

    /*
    * The algorithm is by Werner D. Streidt
    * (http://visca.com/ffactory/archives/5-99/msg00021.html)
    */
    if( contrast > 0 )
    {
    double delta = 127.*contrast/100;
    double a = 255./(255. - delta*2);
    double b = a*(brightness - delta);
    for( i = 0; i < 256; i++ )
    {
    int v = cvRound(a*i + b);
    if( v < 0 )
    v = 0;
    if( v > 255 )
    v = 255;
    lut2[i] = (uchar)v;
    }
    }
    else
    {
    double delta = -128.*contrast/100;
    double a = (256.-delta*2)/255.;
    double b = a*brightness + delta;
    for( i = 0; i < 256; i++ )
    {
    int v = cvRound(a*i + b);
    if( v < 0 )
    v = 0;
    if( v > 255 )
    v = 255;
    lut2[i] = (uchar)v;
    }
    }

    cvLUT( src2, dst_image2, lut_mat2 );
    cvShowImage( "image", dst_image2 );

    cvCalcHist( &dst_image2, hist2, 0, NULL );
    cvZero( dst_image2 );
    cvGetMinMaxHistValue( hist2, 0, &max_value, 0, 0 );
    cvScale( hist2->bins, hist2->bins, ((double)hist_image2->height)/max_value, 0 );
    /*cvNormalizeHist( hist, 1000 );*/

    cvSet( hist_image2, cvScalarAll(255), 0 );
    bin_w = cvRound((double)hist_image2->width/hist_size);

    for( i = 0; i < hist_size; i++ )
    cvRectangle( hist_image2, cvPoint(i*bin_w, hist_image2->height),
    cvPoint((i+1)*bin_w, hist_image2->height - cvRound(cvGetReal1D(hist2->bins,i))),
    cvScalarAll(0), -1, 8, 0 );

    cvShowImage( "histogram", hist_image2 );
    }
    int main( int argc, char** argv )
    {
    // Load the source image. HighGUI use.

    src_image = cvLoadImage( argc == 2 ? argv[1] : file_name, 0 );
    if( !src_image )
    {
    printf("Image was not loaded.\n");
    return -1;
    }

    dst_image = cvCloneImage(src_image);
    hist_image = cvCreateImage(cvSize(320,200), 8, 1);
    hist = cvCreateHist(1, &hist_size, CV_HIST_ARRAY, ranges, 1);
    lut_mat = cvCreateMatHeader( 1, 256, CV_8UC1 );
    cvSetData( lut_mat, lut, 0 );

    cvNamedWindow("image", 0);
    cvNamedWindow("histogram", 0);

    //cvCreateTrackbar("brightness", "image", &_brightness, 200, update_brightcont);
    //cvCreateTrackbar("contrast", "image", &_contrast, 200, update_brightcont);

    update_brightcont(0);
    cvWaitKey(0);

    cvReleaseImage(&src_image);
    cvReleaseImage(&dst_image);


    src2 = cvLoadImage( argc == 2 ? argv[1] : file_name2, 0 );

    if( !src2 )
    {
    printf("Image was not loaded.\n");
    return -1;
    }

    dst_image2 = cvCloneImage(src2);
    hist_image2 = cvCreateImage(cvSize(320,200), 8, 1);
    hist2 = cvCreateHist(1, &hist_size, CV_HIST_ARRAY, ranges, 1);
    lut_mat2 = cvCreateMatHeader( 1, 256, CV_8UC1 );
    cvSetData( lut_mat2, lut2, 0 );

    cvNamedWindow("image", 0);
    cvNamedWindow("histogram", 0);

    cvCreateTrackbar("brightness", "image", &_brightness, 200, update_brightcont2);
    cvCreateTrackbar("contrast", "image", &_contrast, 200, update_brightcont2);

    update_brightcont2(0);
    cvWaitKey(0);

    cvReleaseImage(&src2);
    cvReleaseImage(&dst_image2);

    intx =cvCompareHist(hist,hist2,CV_COMP_BHATTACHARYYA);
    if(x==0){printf("les deux images sont identiques");}
    else {printf(" ce sont différents");}
    cvReleaseHist(&hist);
    cvCompareHist(hist,hist2,0);
    return 0;
    }
    #ifdef _EiC
    main(1,"demhist.c");
    #endif

Discussions similaires

  1. Pub dans une vidéo
    Par Diaz06 dans le forum Flash
    Réponses: 0
    Dernier message: 16/11/2008, 12h13
  2. Détection de visages dans une vidéo
    Par sialamed dans le forum OpenCV
    Réponses: 1
    Dernier message: 17/04/2008, 15h22
  3. incrustation logo dans une vidéo de manière "automatique"
    Par samtheh dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 09/10/2007, 19h45
  4. [FLASH 8] [AS] Déplacement dans une vidéo
    Par levit dans le forum Flash
    Réponses: 2
    Dernier message: 31/03/2007, 16h48
  5. TMediaPlayer et positionnement dans une vidéo
    Par kurul1 dans le forum C++Builder
    Réponses: 6
    Dernier message: 07/03/2006, 15h14

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