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

MFC Discussion :

unsigned char* to char*


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 5
    Points
    5
    Par défaut unsigned char* to char*
    Salut,

    J'ai une question de newbie. Je vais un projet de manipulation d'image et je dois convertir un format d'image unsigned char * en char* pour pouvoir utiliser une librairie.

    Le unsigned char* représente les pixels de l'image.

    J'imagine que je dois parcourir le unsigned char* pour créer en mémoire les nouvelle valeur pour le char*.

    Dans l'optimum, je serrais tenté de faire :
    unsigned char * pUc;
    char * pC;

    pc = (char *) pUc;

    Mais, je rêve un peu....

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void f(char const*);
    ...
    {
        unsigned char* p = ...;
        f(reinterpret_cast<char*>(p));
    }
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ben... On ne sait même pas de quelles librairies tu parles!
    Il n'y a aucun problème entre les deux TYPES, mais si les FORMATS d'image sont différent, eh bien il faudra une fonction de conversion d'un format à l'autre...

    Edit: Post croisé avec Luc, au-dessus
    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.

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Ce peut aussi être dû à un problème de specs.
    D'un côté on peut avoir considéré que le type BYTE s'implémente comme un "unsigned char" (et donc, on va récupérer ce genre de choses en sortie de sockets ou de fichiers) et d'un autre, que le type byte est un "char". Résultats: il faut réinterpréter dans tous les sens, car il y a bien un problème entre les deux types -- j'en ai encore fait l'expérience cette semaine sous Sunpro CC, sous Solaris.
    Ma réponse s'est inscrite en ce sens. Cette solution ne convertit pas les données pointées depuis un format vers un autre -- problème que tu évoques, Médinoc.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses ultra-rapide. La librairie que je veux utiliser, c'est openCV.
    Une image est définit comme suit :
    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
     
    typedef struct _IplImage {
      int nSize                   /* size of iplImage struct */
      int ID                      /* image header version */
      int nChannels;
      int alphaChannel;
      int depth;                  /* pixel depth in bits */
      char colorModel[4];
      char channelSeq[4];
      int dataOrder;
      int origin;
      int align;                  /* 4- or 8-byte align */
      int width;
      int height;
      struct _IplROI *roi;        /* pointer to ROI if any */
      struct _IplImage *maskROI;  /*pointer to mask ROI if any */
      void *imageId;              /* use of the application */
      struct _IplTileInfo *tileInfo; /* contains information on tiling */
      int imageSize;              /* useful size in bytes */
      char *imageData;            /* pointer to aligned image */
      int widthStep;              /* size of aligned line in bytes */
      int BorderMode[4];          /* the top, bottom, left, and right border mode */
      int BorderConst[4];         /* constants for the top, bottom, left, and right border */
      char *imageDataOrigin;      /* ptr to full, nonaligned image */
    } IplImage;
    Et moi, j'ai cela :

    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
    unsigned int AlphaMask; //Mask for Alpha component
     
    int BitsPerPixel; //Number of bits per pixel
     
    unsigned char* ColorMap; //Palette colors
     
    short ColorMapEntries; //If other than 0 image is palletized
     
    unsigned int Flags; //Reserved for special formats (such as compressed ) 0 otherwise
     
    int Height; //Height in pixel of the image
     
    unsigned char* Image;
     
    int Size; //Size of the structure
     
    int Width; //Width in pixel of the image
    A priori, comme je ne modifie pas l'image, je ne fait qu'une lecture, je n'ai pas besoin de faire une copie de l'Image.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/04/2009, 17h49
  2. Réponses: 1
    Dernier message: 15/02/2007, 17h32
  3. pb conversion unsigned char vers char *
    Par FamiDoo dans le forum C
    Réponses: 11
    Dernier message: 24/08/2006, 18h11
  4. conversion char wide char
    Par ep31 dans le forum MFC
    Réponses: 4
    Dernier message: 15/11/2005, 08h14
  5. Pb Invalid Conversion "char" to "char*"
    Par kazarn dans le forum C++
    Réponses: 3
    Dernier message: 02/03/2005, 13h24

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