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 :

chargement d'image avec c++builder


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Par d�faut chargement d'image avec c++builder
    bonjour j'ai des difficultes pour charger une image bmp et la lire pixel par pixel
    car cette etape me permet de faire une segmentation d'image satilitaire

  2. #2
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Salut,
    quel est le code que tu as fait?
    O� se trouve le probl�me?

    Il faut utiliser la m�thode Pixel du TImage:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    int   R    = (Image->Canvas->Pixels[i][j]&0xFF0000)>>16,
          G    = (Image->Canvas->Pixels[i][j]&0x00FF00)>>8,
          B    = (Image->Canvas->Pixels[i][j]&0x0000FF);
    Il existe aussi la m�thode ScanLine, qui est plus rapide.

  3. #3
    Membre �m�rite
    Avatar de Interruption13h
    Inscrit en
    Ao�t 2005
    Messages
    603
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 603
    Par d�faut
    Salut !

    Je te conceil vivement d'utiliser la m�thode ScanLine qui beacoups plus rapide, et moins gourmante que la premi�re m�thode.
    Tu trouvera plein d'exemples sur ce forum; Handerson n'as pas c�ss� d'en contribuer...

    A+

  4. #4
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Citation Envoy� par bandit boy Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    int   R    = (Image->Canvas->Pixels[i][j]&0xFF0000)>>16,
          G    = (Image->Canvas->Pixels[i][j]&0x00FF00)>>8,
          B    = (Image->Canvas->Pixels[i][j]&0x0000FF);
    Salut bandit boy, si tu veux prendre les couleurs tu peux utiliser les macros GetRValue, GetGValue et GetBValue. Sans doute, quelle font exactement ce que tu fais, c'est juste plus facile � lire

  5. #5
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    Citation Envoy� par ramzidyk Voir le message
    bonjour j'ai des difficultes pour charger une image bmp et la lire pixel par pixel
    car cette etape me permet de faire une segmentation d'image satilitaire
    Pour charger une image Bmp :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Image1 -> Picture -> LoadFromFile("c:\\monimage.bmp") ;
    et pour lire un pxl :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    Tu utilise soit ScanLine soit 
    Image1 -> Canvas -> Pixels[Colonne][Ligne] ; // tu aurra les valeurs en couleurs

  6. #6
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Citation Envoy� par Crayon Voir le message
    Salut bandit boy, si tu veux prendre les couleurs tu peux utiliser les macros GetRValue, GetGValue et GetBValue. Sans doute, quelle font exactement ce que tu fais, c'est juste plus facile � lire
    Cool, je ne connaissais pas. Merci de l'info.

  7. #7
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Une derni�re fois :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class jPixel
    {
    public :
    Byte Blue;
    Byte Green;
    Byte Red;
    };
    On suppose ceci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    AnsiString Filename; //chemin complet du bitmap
    Graphics::TBitmap *Bitmap = new Graphics::TBitmap; //ne pas oublier de le détruire
    On aura donc ceci � faire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    Bitmap->LoadFromFile(Filename);
    Bitmap->PixelFormat = pf24bit; // convertir en 24 bits
    L'acc�s aux composantes (R,G,B) est simple et rapide :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    jPixel *Line;
    for(int y = 0; y < Bitmap->Height; y++)
        {
        Line = (jPixel*)Bitmap->ScanLine[y];
        for(int x = 0; x < Bitmap->Width; x++)
            {
    	...Line[x].Red...
            ...Line[x].Green...
            ...Line[x].Blue...
            }
        }
    =======================
    BITMAPS COULEURS 8 BITS
    =======================

    On peut convertir les bitmaps 8 bits en 24 bits, ce qui est une solution de facilit� mais qui n�cessite plus de ressources m�moire.
    Le traitement sur un bitmap 8 bits est par contre totalement diff�rent puisque chaque pixel (vu par ScanLine) correspond � l'index d'une couleur dans la palette.
    Dans ce cas pr�cis, comme il n'y a que 256 teintes possibles, il suffit de les r�cup�rer dans un tableau.
    On y gagnera �norm�ment, en lieu et place de Pixels[x][y] effectu� sur l'int�gralit� du bitmap 8 bits.

    On d�clare :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    PALETTEENTRY Colors[256];
    Exemple de code pour r�cup�rer les 256 teintes de la palette d'un bitmap :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    Graphics::TBitmap *Bitmap = Image1->Picture->Bitmap; //pour montrer que...
    GetPaletteEntries(Bitmap->Palette, 0, 256, Colors); // récupération des 256 couleurs
    On acc�dera aux composantes RGB en faisant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    PALETTEENTRY color;
    Byte *Line;
     
    ...
        Line = (Byte*)Bitmap->ScanLine[y]; 
        ...
            color = Colors[ Line[x] ];
            ...color.peRed 
            ...color.peGreen 
            ...color.peBlue
    Ce qui �vitera de solliciter les GetR, GetG et GetBValue suite � Pixels[x][y] !

    Pour tout ce qui concerne le traitement d'images on a int�r�t � aller dans le sens de la rapidit� d'ex�cution et non dans celle de la r�daction du code !

    A plus !

  8. #8
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    Citation Envoy� par henderson Voir le message
    Pour tout ce qui concerne le traitement d'images on a int�r�t � aller dans le sens de la rapidit� d'ex�cution et non dans celle de la r�daction du code !
    Enti�rement d'accord. Dans mes applications de traitement d'image, j'utilise que le ScanLine, tr�s souvent sur des images en niveaux de gris. C'est ++++++++++ rapide.

    @+

  9. #9
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut



    Ne serais pas de lancer un sous forum c++Builder pour le traitement d'image ?

  10. #10
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Il y a pas mal de choses sur le forum Algorithmes -> Traitement d'images !

    A plus !

Discussions similaires

  1. Binarisation d'image avec C++ Builder 6
    Par asma88 dans le forum OpenCV
    R�ponses: 1
    Dernier message: 10/05/2011, 20h33
  2. Traitement d'image avec C++Builder
    Par Imed Soufi dans le forum C++Builder
    R�ponses: 11
    Dernier message: 19/04/2008, 17h00
  3. chargement d'image avec c++
    Par ramzidyk dans le forum C++
    R�ponses: 3
    Dernier message: 01/11/2007, 12h22
  4. [DOM] Chargement d'image avec progess bar
    Par seb.49 dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 08/10/2007, 08h56
  5. readystate et chargement d'image avec Firefox
    Par sorenson dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 25/06/2006, 11h47

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