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

Visual C++ Discussion :

[VC++ 2003] copie d'un buffer vers un buffer plus petit


Sujet :

Visual C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Par défaut [VC++ 2003] copie d'un buffer vers un buffer plus petit
    Bonjour,

    suite a mon poste qui n'a pas l'air d'inspirer qui que se soit (voir MFC [VC++ 2003][MFC] Problème d'affichage dans un CButton ou Picture Controle), voici une question qui, si elle est résolu, pourra régler mon problème.

    Donc j'ai un buffer de type et de taille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    static uInt8  *ImaqBuffer=NULL;    // acquisiton buffer
     
    ImaqBuffer = (uInt8 *) malloc(AcqWinWidth * AcqWinHeight * bytesPerPixel * sizeof(uInt8));
    ce buffer représente une image de 1280x960 pixel.

    j'aimerai copier 1 pixel sur 3 dans un autre buffer du même type. Pour ça je suppose que je doit utiliser memcpy.

    Voilà ce que j'ai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(int i=0; i< size; i=i+3)
        {
    	memcpy((void *)ImaqBufferVisu[i],(void *)ImaqBuffer[i],(bytesPerPixel * sizeof(uInt8)));
        }
    Le compilo n'est pas d'accord avec ça, je suppose que j'ai mal attribué le t_size de memcpy et que dans ma boucle il ne faut pas faire i=i+3 mais autre chose. Pourriez vous m'aider à résoudre se problème, car une fois que j'aurai en quelque sorte comprésser mon buffer, je pourrai le visualiser dans une fenêtre plus petite.

    merci bcp

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Par défaut
    Voici ce que j'ai fait d'autre depuis ce matin, mais ça ne donne tjrs rien.
    Je ne suis pas doué avec les allocation de mémoire...

    On récapitule:

    définition variables globales:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    static uInt8        *ImaqBuffer=NULL;    // acquisiton buffer
    static uInt8        *ImaqBufferVisu=NULL;    // acquisiton buffer
    Allocation mémoire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ImaqBuffer = (uInt8 *) malloc(AcqWinWidth * AcqWinHeight * bytesPerPixel * sizeof(uInt8));
    ImaqBufferVisu = (uInt8 *) malloc(AcqWinWidth/3 * AcqWinHeight/3 * bytesPerPixel * sizeof(uInt8));
    Copie en 3 fois moins grand (tous les trois pixels)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    AcqWinWidth=1280;
    AcqWinHeight=960;
    size = (AcqWinWidth * AcqWinHeight)/3;
     
    for(int i=0; i< size; i++)
    {
         memcpy((void*)&ImaqBufferVisu[i],(void*)&ImaqBuffer[i*3],bytesPerPixel * sizeof(uInt8));
    }
    mais ça ne veut toujours pas fonctionner, le compilateur s'arrête quand i = 143288!! moi pas comprendre?!?

    Quelqu'un pourrai me dire se qui cloche la dedans?

    merci pour le coup de main.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Par défaut
    ok, je suis un gros null...

    AcqWinWidth/3 * AcqWinHeight/3 n'est pas égale à (AcqWinWidth * AcqWinHeight)/3...

    désoler pour le dérrangement!!! lol

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Par défaut
    eu en fait c pas finis...

    ça ne marche toujours pas...

    j'ai essayé ça:

    définition variables globales:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    static uInt8 *ImaqBuffer=NULL; // acquisiton buffer 
    static uInt8 *ImaqBufferVisu=NULL; // acquisiton buffer
    Allocation mémoire:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ImaqBuffer = (uInt8 *) malloc(AcqWinWidth * AcqWinHeight * bytesPerPixel * sizeof(uInt8)); 
    ImaqBufferVisu = (uInt8 *) malloc(AcqWinWidth * AcqWinHeight * bytesPerPixel * sizeof(uInt8));
    une copie simple d'un buffer à l'autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    AcqWinWidth=1280; 
    AcqWinHeight=960; 
     
    memcpy((void*)ImaqBufferVisu,(void*)ImaqBuffer, (AcqWinWidth * AcqWinHeight * bytesPerPixel * sizeof(uInt8)));
    et la aucun problème...

    mais si je veux faire une copie de mon buffer pour le compresser en ne copiant que 1 pixel sur trois, ça ne marche plus... je suis une bille avec la mémoire.

    Pouver m'aider s'vouplait

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Excel 2003]Copie Cellules fichier A vers cellules fichier B
    Par jbulysse dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/08/2010, 10h57
  2. Copie d'1 Memo vers un autre plus grand
    Par Cyrille36 dans le forum Débuter
    Réponses: 4
    Dernier message: 01/07/2009, 12h31
  3. Win Server 2003 R2 - Restauration de ghost sur une partition plus petite
    Par super_boulet dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 23/01/2009, 12h06
  4. Copie de tables access vers Sql ?
    Par franck06 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 01/03/2005, 14h10
  5. copie d'un fichier vers un autre serveur
    Par jexl dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 16h04

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