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++Builder Discussion :

Tableau et image


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Tableau et image
    Bonjour,

    je suis désolé si ma question vous semble evidente mais je suis débutant et je n'ai pas trouvé de réponse dans le forum.
    Voilà je fais de l'acquisition d'image avec une caméra via le port usb et la bonne dll fournie par le constructeur. Je récupère un tableau de unsigned char representant les X*Y pixels codés sous 8 bits. Je souhaiterai afficher ce tableau sous forme d'une image.
    Pourriez vous m'aider ?

    merci,

  2. #2
    Membre régulier Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Points : 111
    Points
    111
    Par défaut Exemple de code
    Salut,
    Je ne sais pas quel genre de valeur tu récupère dans ton tableau.
    Pour coder une image en niveaux de gris il faut des valeurs allant de 0 à 255. Et pour une image en couleur c'est la même chose mais il faut les composantes Rouge, Vert, Bleu allant chacune de 0 à 255.
    Si tes valeurs dépasse les 255, il faut que tu fasse un moyenage ou un seuillage.

    Pour transformer ta matice 2D en image il faut utiliser un TBitmap, classe qui existe dans BCB. Tu peux atteindre les pixels en utilisant son propriété "Canvas".

    Voici un exemple de code que j'ai fait pour transformer une image en couleur en niveau de gris. Tu peux t'inspirer de ça. Essais de modifier la valeur de chacun des pixels en relation avec ton tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void __fastcall TFPrinc::RendNiveaudegris()
    {
            for (int l = 0; l < FImage->H; l++)  // H est le hauteur
            {
                    for (int c = 0; c < FImage->W; c++) // W est la largeur
                    {
                            TColor Co = FImage->pImage->Canvas->Pixels[c][l];
                            unsigned long p = (0.30*GetRValue(Co)) + (0.59*GetGValue(Co)) + (0.11*GetBValue(Co));
                            ImageBitmap->Canvas->Pixels[c][l] = TColor(RGB(p,p,p));
                    }
            }
    }
    En espérant que ça t'aide !

    PS : Une image en niveau de gris est une image pour laquelle les composantes RVB sont egales.

    Jag

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    Peut-être en commençant par mettre un TImage sur la fiche. A ce stade de
    la conception, charger l'image avec un fichier .bmp 256 couleurs, même si
    celui ci ne fait que 16*16. Il serait bon que ce .bmp soit sauvegardé avec
    une palette 256 couleurs au standard SuperVGA. Tu peux utiliser l'éditeur d'images
    qui est fourni avec BCB pour créer ce type de bitmap.

    Le TImage est alors prêt à l'emploi.

    A partir des dimensions du tableau, copier les Bytes du tableau dans le bitmap
    de l'image en utilisant ScanLine :

    Je suppose pour les dimensions du tableau :

    et par conséquent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Byte Tableau[dimY][dimX];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Byte *dest;
    //Ajuster les dimensions du bitmap du TImage sur celui du tableau
    Image->Picture->Bitmap->Width = dimX;
    Image->Picture->Bitmap->Height = dimY;
    for(int y = 0; y < dimY; y++)
        {
        dest = (Byte*)Image->Picture->Bitmap->ScanLine[y];
        for(int x = 0; x < dimX; x++)
            {
            *dest = Tableau[y][x]; dest++;
    	}
        }
    Image->Width = Image->Picture->Bitmap->Width;
    Image->Height = Image->Picture->Bitmap->Height;
    Par contre... au niveau des couleurs... espérons que l'image source soit elle aussi calculée
    par rapport au standard SuperVGA 256 couleurs ! Si non... il faudra :
    - soit trouver la bonne palette
    - soit recalculer la palette existante !

    A moins que l'image source soit en niveaux de gris ? Dans ce cas, il suffira de faire une
    petite bidouille, en espérant qu'elle fonctionne sur une version supérieure à BCB 3 Pro.

    A plus !

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    meri beaucoup pour vos réponses.
    je vais les tester demain.

    a++

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

Discussions similaires

  1. [LabView 8.2] Tableau en image
    Par leo kremer dans le forum LabVIEW
    Réponses: 1
    Dernier message: 20/05/2007, 13h31
  2. Tableau d' images, est-ce que c'est possible ?
    Par awane dans le forum WinDev
    Réponses: 8
    Dernier message: 27/11/2006, 20h10
  3. Faire un tableau d'images
    Par Battosaiii dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 19/06/2006, 10h56
  4. tableau et image
    Par casafa dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2006, 20h52
  5. [HTML] [Débutant] Tableau et images
    Par skandas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/06/2005, 01h01

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