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 :

Création d'un cercle


Sujet :

C++Builder

  1. #21
    Membre confirmé Avatar de bahiatoon
    Inscrit en
    Juillet 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 43

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

    je ne parviens toujours pas à cerner le problème

    j'ai pris un exemple simple ou le rayon=1 ,j'ai utilisé le code suivant:
    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
     
    int tri[1000];
     
    H=Image1->Picture->Bitmap->Height;
    W=Image1->Picture->Bitmap->Width;
     
    for(int x=0;x<W;x++)
            for(int y=0;y<H;y++)
            {
            a=Image1->Picture->Bitmap->Canvas->Pixels[x][y];
            b=a%256;
            g=(a/256)%256;
            r=(a/(256*256))%256;
            Image[x][y]=(int)(r*0.299+g*0.587+b*0.114);
            }
    int max;
     
    for(int x = 0; x < W; x++)
        for(int y = 0; y < H; y++)
           {
            tri[1]=Image[x-1][y];
            tri[2]=Image[x+1][y];
            tri[3]=Image[x][y+1];
            tri[4]=Image[x][y-1];
            max=tri[1];
            for(int i=2;i<=4;i++){if (max<tri[i]) max=tri[i];}
     
    image[x][y]=max;
            }
     
     
    for(int x=0;x<W;x++)
            for(int y=0;y<H;y++)
            {
            Image1->Canvas->Pixels[x][y]=(TColor)((int)(image[x][y]+256*image[x][y]+256*256*image[x][y]));
            }
    et avec ce code j'obtiens le résultat voulu , mais dès que je généralise(rayon quelconque)ça ne marche plus

    henderson à écrit:
    C'est pour faire quoi au juste ?
    c'est une érosion de l'image.

    A+

  2. #22
    Membre confirmé Avatar de bahiatoon
    Inscrit en
    Juillet 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 43

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

    Enfin, le programme est fonctionnel

    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
    47
    48
    49
    50
    51
    52
    53
    54
     
    int tri[1000];
    H=Image1->Picture->Bitmap->Height;
    W=Image1->Picture->Bitmap->Width;
    for(int x=0;x<W;x++)
            for(int y=0;y<H;y++)
            {
            a=Image1->Picture->Bitmap->Canvas->Pixels[x][y];
            b=a%256;
            g=(a/256)%256;
            r=(a/(256*256))%256;
            Image[x][y]=(int)(r*0.299+g*0.587+b*0.114);
            }
     
    int px, py;
    double d;
    int max;
    for(int x = 0; x < W; x++)
        for(int y = 0; y < H; y++)
           {
            int k=1;
            for (int i = -50; i <= +50; i++)
                    {
                    px = x + i;
                    for(int j = -50; j <= +50; j++)
                                    {
                                    py = y + j;
                                    if((px >= 0) && (px < W) && (py >= 0) && (py < W))
                                            {
                                             //d = hypot(px,py);
                                            d=sqrt(pow(x-px,2)+pow(y-py,2));
                                            if (d <= 50.0)
                                                    {
                                                    tri[k]=Image[px][py];
                                                    k=k+1;
                                                    }
                                            }
                                    }
     
                    }
                    max=tri[1];
                    for (int l=2;l<=k;l++)  {
                                            if (max<tri[l])max=tri[l];
                                            }
    image[x][y]=max;
            }
     
     
    for(int x=0;x<W;x++)
        for(int y=0;y<H;y++)
        {
        Image1->Canvas->Pixels[x][y]=(TColor)((int)(image[x][y]+256*image[x][y]+256*256*image[x][y]));
        }
    }
    Merci beaucoup pour votre aide

  3. #23
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 500
    Par défaut
    Salut !

    Chez moi aussi ça fonctionne bien !

    Par contre, pourquoi ne pas utiliser : d = hypot(i,j) ?
    A t-on un avantage à utiliser le sqrt (pow pow) ?

    Et pourquoi ne pas réaliser le max directement au lieu d'avoir un boucle supplémentaire ?

    Enfin... l'essentiel est que ça tourne !

    A plus et bon courage pour la suite !

  4. #24
    Membre confirmé Avatar de bahiatoon
    Inscrit en
    Juillet 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juillet 2006
    Messages : 169
    Par défaut
    Salut,
    Par contre, pourquoi ne pas utiliser : d = hypot(i,j) ?
    A t-on un avantage à utiliser le sqrt (pow pow) ?
    il n'y a aucun avantage à utiliser le sqrt (pow pow), c'est seulement une question d'habitude

    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2010] Création d'un cercle dans un graphique
    Par jauffray.delteil dans le forum Excel
    Réponses: 4
    Dernier message: 04/01/2013, 14h21
  2. création shape cercle
    Par emmanuel89500 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/12/2010, 22h09
  3. Création des cercles sur un evenement click
    Par juvenalvangu dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/09/2009, 20h24
  4. Création d'un cercle plein blanc sur fond noir
    Par Rafoo dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 11/04/2006, 14h53
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 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