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 du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Points : 62
    Points
    62
    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 du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Points : 62
    Points
    62
    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 du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Points : 62
    Points
    62
    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 du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Points : 62
    Points
    62
    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