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

C Discussion :

[débutant] Questions sur les images et pointeurs


Sujet :

C

  1. #1
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut [débutant] Questions sur les images et pointeurs
    Bonjour à tous

    Je réalise actuellement une petite application pour capturer des images d'une caméra.

    Une fonction de la SDK de la caméra me fournit, et je cite ^^:
    The iidc_lockdata() function locks image buffer for specified frame data and returns a pointer to the first byte..

    Elle me retourne donc un pointeur sur le premier octet du buffer contenant mon image.
    Ma question est la suivante: comment faire pour sauvegarder cette image dans un fichier bitmap ?

    Je me suis renseigné et j'ai réussi à créer l'en-tête du fichier mais je n'arrive pas à stocker les données.

    Comment faire pour sauvegarder ce buffer dans un fichier ?
    Pour le moment j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fwrite(&Buff,sizeof(Buff),1,stream);
    mais ça ne me sauvegarde que 4 octets (pour une image en 640*480 ^^)

    voilou, si quelqu'un a une piste ou une solution, je suis preneur

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Buff est un pointeur sur (unsigned char ??) , ce qu'attend fwrite..

    Par contre, &Buff est l'adresse de Buff (l'adresse du pointeur), et sous ton OS la taille d'une adresse est 4 octets, donc tu écrit 4 octets..



    Donc frwrite ( Buff, sizeof(*Buff), ..)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Merci de cette réponse, c'est vrai j'ai oublié quelques détails.

    Buff est de type void*

    d'ailleurs, autre question subsidiaire ^^ Que représente ce type ?
    parce que int, char, long, int** à la limite, je vois ce que ça représente mais void ?

    je vais essayer en & et en mettant l'*; je vais voir

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    void en tant que tel n'est pas un type..

    void * est une écriture de C permettant l'équivalence avec n'importe quel type...

    Par contre, pour que le résultat soit correct, il faut savoir le type original...

    void *Buff peut être transféré sur des char, des unsigned char, des int, des floats, des doubles, n'importe quoi.. Mais bien entendu en tant que tel tu ne peux pas t''en servir. Il faut re-caster vers le type d'origine..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 567
    Points
    41 567
    Par défaut
    Pas besoin de re-caster pour le fwrite.
    Par contre, il faut penser à sauvegarder les données pointées et non le pointeur lui-même...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    oui bien sûr tu as raison Médinoc.. Quand je mentionnais le "re-casting" c'était si on voulait se servir des éléments de Buff...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. [Débutant] question sur les formulaires
    Par IDE dans le forum Access
    Réponses: 8
    Dernier message: 15/07/2006, 16h37
  2. [Débutant] Question sur les lumières
    Par Mandalar dans le forum DirectX
    Réponses: 10
    Dernier message: 04/01/2006, 13h49
  3. [Debutante][image]questions sur les images
    Par misstinkiete dans le forum 2D
    Réponses: 2
    Dernier message: 25/07/2005, 21h23
  4. [parseur] [Débutant] Question sur les parseurs
    Par steph-n dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 02/05/2005, 19h17
  5. [débutant] question sur les #
    Par Ultros dans le forum C
    Réponses: 3
    Dernier message: 29/04/2004, 12h30

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