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 :

Traitement d'image s'arrête au milieu de l'image


Sujet :

C++Builder

  1. #1
    Membre régulier Avatar de bahiatoon
    Inscrit en
    Juillet 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2006
    Messages : 169
    Points : 74
    Points
    74
    Par défaut Traitement d'image s'arrête au milieu de l'image
    Salut à tous,


    Mon programme est bizarre et je ne sais pas pourquoi

    j'explique: c'est un programme qui est censé traiter toute l'image mais ce n'est pas le cas, il traite une partie et laisse l'autre telle qu'elle (j'ai fait mes tests pour une image 496x386)

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    unsigned int Histogram[256], Transform[256];
    BYTE ImageData[1000][1000];
    int x, y, i, j, sum;
    H=Image1->Picture->Bitmap->Height;
    W=Image1->Picture->Bitmap->Width;
     
    for(int x=0;x<H;x++)
            for(int y=0;y<W;y++)
            {
            a=Image1->Picture->Bitmap->Canvas->Pixels[x][y];
            b=a%256;
            g=(a/256)%256;
            r=(a/(256*256))%256;
            ImageData[x][y]= (r*0.299+g*0.587+b*0.114);
            }
     
    // initialisation de l'histogramme
    for (i=0; i<=255; i++)
    Histogram[i] = 0;
    // Construction de l'histogramme
    for (x=0; x<=H; x++)
            for (y=0; y<=W; y++)
            {
            Histogram[ImageData[x][y]]++;
            }
    // transformation
    for (i=0; i<=255; i++)
            {
            sum = 0;
            for (j=0; j<=i; j++)
            sum += Histogram[j];
            Transform[i] = INT(255.0*sum/(H*W));
            }
    // Transformation de l'image
    for (x=0; x<=H; x++)
            for (y=0; y<=W; y++)
            {
            ImageData[x][y] = Transform[ImageData[x][y]];
            }
    // affichage de l'image
    for (x=0; x<=H; x++)
            for (y=0; y<=W; y++)
            {
            Image1->Canvas->Pixels[x][y]=(TColor)((int)(ImageData[x][y]+256*ImageData[x][y]+256*256*ImageData[x][y]));
            }

    Si vous avez une solution n'hésitez pas à me laisser un message

  2. #2
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    for (x=0; x<=H; x++)
    for (y=0; y<=W; y++)
    {
    Image1->Canvas->Pixels[x][y]=(TColor)((int)(ImageData[x][y]+256*ImageData[x][y]+256*256*ImageData[x][y]));
    }
    En ce qui concerne Pixels[X][Y] :
    - les x varient dans le sens de la largeur
    - les y dans le sens de la hauteur

    Tu fais le contraire ce qui explique cela (il manque un bout soit en largeur soit en hauteur selon les dimensions de l'image) !

    A plus !

  3. #3
    Membre régulier Avatar de bahiatoon
    Inscrit en
    Juillet 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2006
    Messages : 169
    Points : 74
    Points
    74
    Par défaut
    Salut,

    Tu as raison

    Merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    slt,

    cette solution demande beaucoup de ressources non? Avez-vous un autre moyen? Peut-être avec ScanLine?

    Merci

  5. #5
    Membre régulier Avatar de bahiatoon
    Inscrit en
    Juillet 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2006
    Messages : 169
    Points : 74
    Points
    74
    Par défaut
    Salut,

    Citation Envoyé par chm0105
    slt,

    cette solution demande beaucoup de ressources non? Avez-vous un autre moyen? Peut-être avec ScanLine?

    Merci
    Tu veux dire le même programme avec ScanLine

    A+

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 26/05/2009, 16h18
  2. Rendre le milieu d'une image couleur en gris
    Par nouha_79 dans le forum Images
    Réponses: 2
    Dernier message: 16/11/2007, 19h20
  3. Réponses: 1
    Dernier message: 05/09/2007, 12h47
  4. Réponses: 0
    Dernier message: 24/07/2007, 00h03
  5. [Image]Lancer l'api du scanner pour uploader une image ?
    Par mikemead dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 30/03/2006, 20h27

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