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

Bibliothèque standard C Discussion :

Probleme Opencv et Ubuntu


Sujet :

Bibliothèque standard C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut Probleme Opencv et Ubuntu
    Bonjour,

    Voila je vous écris car j'ai un soucis avec mon programme C, depuis que je suis passé a la version 10.04, mon shell me sort ces 3 erreurs a la compilation ( cela ne le faisait pas avec la 9.10 )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    gcc -lcv -lhighgui -lSDL -lSDLmain -lGL -ISDL -lGLU  -c c/get_picture.c
    c/get_picture.c: In function ‘funVideo’:
    c/get_picture.c:28: error: too few arguments to function ‘cvRetrieveFrame’
    c/get_picture.c: In function ‘separation_image’:
    c/get_picture.c:68: error: too few arguments to function ‘cvRetrieveFrame’
    c/get_picture.c:72: error: too few arguments to function ‘cvSaveImage’
    Voici le code en question:

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    #include <opencv/cv.h>
    #include <opencv/highgui.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <string.h>
     
     
    char    *lien = "c/test.avi";
     
    void    funVideo(const char* filename, int i, int tab[600][600])
    {
      CvCapture* capture = cvCreateFileCapture(filename);
      IplImage* image;
      int j;
      CvScalar pixel;
      if(!capture){
        printf("Probleme");
        return;
      }
     
      do{
        cvGrabFrame(capture);
        image = cvRetrieveFrame(capture);
        if(image){
        }
        i--;
        }while(image && i);
     
     
      if(image){
        printf("%d  /  %d \n",image->width,image->height);
     
        for(i=0; i < image->width ; i++){
          for(j=0; j < image->height ; j++){
            pixel = cvGet2D(image,j,i);
            tab[i][j] = pixel.val[0] + pixel.val[1]*1000 + pixel.val[2]*1000000;
          }
        }
      }
    }
    void separation_image (const char* filename)
    {
      int i = 100;       /* nombre d'image que l'on va augmenter (ici 100) */
      int j = 1;                                     /* compteur pour numeroter les images */
      CvCapture* capture = cvCreateFileCapture(filename);
      IplImage* image;                      /* capture de l'image depuis la video */
      mkdir("images",0777); /* création du dossier + gestion des droits d'acces */
     
      if(!capture)
        {
          printf("Probleme");
          return;
        }
     
     
      do
        {
          char s1[100] = "images/img";
          char s2[] = ".bmp";
          char n[10];
          cvGrabFrame(capture);
          image = cvRetrieveFrame(capture);
          sprintf(n, "%i", j);              /* manipulation des chaines de caracteres \
    */
          strcat(s1,n);
          strcat(s1,s2);
          cvSaveImage(s1,image);            /* on l'enregistre */
          j++;
          i--;
        }while(image && i);
    }
     
    void print_tab(int tab[600][600])
    {
      printf("%d\n", tab[50][69]);
      printf("%d\n", tab[56][400]);
      printf("%d\n", tab[267][0]);
      printf("%d\n", tab[53][60]);
    }
     
    int main(void)
    {
            /* int tab[600][600]; */
            /* funVideo(lien,5,tab); */
            separation_image (lien);
            return 0;
    }
    J'ai essayer de reinstaller la lib Opencv sans succes, cela peut il etre du a la version de Opencv incompatible avec la nouvelle version d'ubuntu??
    Toute aide est la bienvenue
    Par avance merci et bonne soiree

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut
    Bonjour,

    C'est normal. cvRetrieveFrame et cvSaveImage sont définies comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .. cvRetrieveFrame(CvCapture *capture, int streamIdx CV_DEFAULT(0))
    .. cvSaveImage(filename, image, const int* params CV_DEFAULT(0))
    CV_DEFAULT(val) est une macro qui permet de mettre une valeur par défaut. Mais si je me trompe pas ceci n'est valable qu'en C++ , donc en C CV_DEFAULT() est ignoré et il faut mettre la valeur à la main..

    Je ne sais pas par contre pourquoi ça marchait avant.. car ça n'aurait pas dû !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    Je sais pas, c'est etrange car je travaille actuellement sur un projet avec 3 autres personnes, nous avons donc le meme code, sur leurs machines tout compile parfaitement excepte sur la mienne ou j'ai les 3 erreurs ci dessus, la seule chose nous differencant etant la version d'ubuntu ( 9.10 et 10.04 pour ma part )....

    Et de meme, sur la documentation Opencv, il est marque :

    cvRetrieveFrame

    Gets the image grabbed with cvGrabFrame

    IplImage* cvRetrieveFrame( CvCapture* capture );

    capture
    CvCapture representing camera or AVI file.

    The function cvRetrieveFrame returns the pointer to the image grabbed with cvGrabFrame function. The returned image should not be released by the user.
    Donc je t'avoue que je suis un peu perdu

    Enfin je te remercie pour ta reponse mais a quoi correspond le CV_DEFAULT(0) ? Qu'elle valeur dois je mettre?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut
    CV_DEFAULT est défini comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifndef CV_EXTERN_C
        #ifdef __cplusplus
          #define CV_EXTERN_C extern "C"
          #define CV_DEFAULT(val) = val
        #else
          #define CV_EXTERN_C
          #define CV_DEFAULT(val)
        #endif
      #endif
    A priori si vous n'avez pas __cplusplus de define alors CV_DEFAULT(val) est tout simplement ignoré. Il vous suffit de mettre val à la place (regarder dans highgui.h pour avoir les valeurs par défaut).

    sur leurs machines tout compile parfaitement excepte sur la mienne ou j'ai les 3 erreurs ci dessus, la seule chose nous differencant etant la version d'ubuntu ( 9.10 et 10.04 pour ma part )
    Euh une mise à jour de gcc qui fait que __cplusplus n'est plus define en C ^^ (ils compilent bien avec gcc ou g++ vos collègues ?) ? Vous pouvez vérifier en comparant vos gcc --version.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    Oui, il compile bien avec gcc et en plus on partage le meme Makefile

    Je vais regarder pour les valeurs par default et vous tiendrais au courant

    Merci

    EDIT: apres recherche, je ne trouve pas la valeur a mettre a la place de CV_DEFAULT, elle n'est precisée nul part dans le fichier hguihui.h ( excepte sous la forme val )....J'ai essayer avec les valeurs standards ( 0 , 1..) mais cela ne marche pas

Discussions similaires

  1. Probleme Opencv et Ubuntu
    Par XstasY dans le forum Linux
    Réponses: 1
    Dernier message: 14/06/2010, 17h18
  2. Probleme 3d sur ubuntu
    Par leyackeur dans le forum Ubuntu
    Réponses: 28
    Dernier message: 05/02/2008, 19h33
  3. Problème permission sous Ubuntu
    Par zuxion dans le forum Administration système
    Réponses: 10
    Dernier message: 04/06/2006, 19h27
  4. Problème boot XP/Ubuntu
    Par Premium dans le forum Administration système
    Réponses: 12
    Dernier message: 19/03/2006, 17h06

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