Accueil > Forum > > > > trés urgent(probléme de programmation)
trés urgent(probléme de programmation)
mercredi 13 février 2008 à 20:06:34 |
trés urgent(probléme de programmation)

amine52002
|
bonsoir , je suis debutant en programmation et j'ai voulé creer un programme qui permet d'extraire un ensemble de points à partir de la silhouette d'une image et d'afficher ces points sur une autre variable image l'idée c'est pr chaque distance D je prend un point j'ai esseyé de faire ce code mais il na pas marché pouriez vous m'aidez la SVP procedure TForm1.preleverClick(sender:Tobject); var x,y: Tpoint; i,j,nbCount,z,t:integer; begin nbCount:=0; for j:=0 to bmp.height-1 do for j:=0 to bmp.width-1 do begin x.X:=bmp.Canvas.PenPos.X; x.Y:= bmp.Canvas.PenPos.Y; tableau[nbCount]:=x; nbCount:= nbCount+1; end; for i:=0 to nbCount-1 do begin y.X:=tableau[nbCount].X; z:=y.X; y.Y:=tableau[nbCount].Y; t:=y.Y; form1.Image2.Canvas.MoveTo(z,t); end; end; pouriez vous optimisez mon code pr qu'il puisse marcher
|
|
mercredi 13 février 2008 à 21:26:33 |
Re : trés urgent(probléme de programmation)

Guillemouze
|
ouhaaaaa, ca c'est une procedure qui sert a ..... bah absolument a rien !!! j'ai pas trop compris ton sujet, mais ca me semble pas des plus simple pour debuter
procedure TForm1.preleverClick(sender:Tobject); var x,y: Tpoint; i,j,nbCount,z,t:integer; begin nbCount:=0; for j:=0 to bmp.height-1 do for j:=0 to bmp.width-1 do //modification de la variable "j" de la premiere boucle, je croyai que c'etait pas possible. peut etre utiliser i et j begin //la tu parcours chaque pixel ton image x.X:=bmp.Canvas.PenPos.X; x.Y:= bmp.Canvas.PenPos.Y; //Le penpos dans ta boucle ne change pas, donc tableau[x]=tableau[x+1] tableau[nbCount]:=x; nbCount:= nbCount+1; end;
//a ce stade, tu as un tableau de bmp.height*bmp.width elements tous identiques correspondant au penpos de ton bmp
for i:=0 to nbCount-1 do
begin
y.X:=tableau[nbCount].X;
z:=y.X;
y.Y:=tableau[nbCount].Y;
t:=y.Y;
form1.Image2.Canvas.MoveTo(z,t);
end; //la boucle precedente est equivalente a la suivante: ... for i:=0 to nbCount-1 do
begin form1.Image2.Canvas.MoveTo(tableau[nbCount].X, tableau[nbCount].Y);
end; //... qui deplace le Pen (sans dessiner, ca c'est LineTo) su chaque pixel de ton image end;
Pour resumer, tu memorise autant de fois qu'il y a de pixels dans ton image la position du pen qui ne bouge pas, et ensuite, tu deplace le pen d'une autre image sur ce meme point le meme nombre de fois. Pas tres efficace to ca.
Sinon, tu peux faire
form1.Image2.bitmap.assign(bmp);
|
|
mercredi 13 février 2008 à 21:47:04 |
Re : trés urgent(probléme de programmation)

amine52002
|
enfait l'idée de penpos ne me sert à rien j'ai juste essayé avec mon probléme c'est que au depart j'ai le contour externe d'une image avec qui je doit recuperer un ensemble de points par exemple pr chaque 3 pixel je prend un point jusqua la fin du contour (sela ce fait de maniére algorithmique) et que par la suite afficher ces points sur un autre Timage mon grand pb c'est que je ne sais pas vraiment programmé    et que j'ai resté des jours à ecrire ce code  SVP aidez moi
|
|
mercredi 13 février 2008 à 22:19:43 |
Re : trés urgent(probléme de programmation)

Oniria
|
Bonjour,
si j'ai bien compris, tu as une image avec le contour et tu veux mémoriser tous les points du contour pour pouvoir les réafficher dans une autre image ? Déja, ton algorythme c'est quoi ? Tu ne peux pas partir à l'aveuglette. Comment compte tu mémoriser les points du contour , veux tu que tes points se suivent comme une ligne que l'on suit ou veux tu juste mémoriser les points du contour comme un simple nuage de point (si les points se suivent, tu pourras faire des zooms facilement mais l'analyse est assez complexe sinon le nuage est très facile à faire mais un zoom est bien plus dur) ? Ton contour a - t-il toujours la même couleur (comment le différencier du reste de l'image ? ). Pour pouvoir faire ton programme, il faut que tu détailles un peux plus ton projet car ton code n'est pas clair et je suis désolé mais je ne peux pas t'aider sans plus de détails.
Une bonne étude du probléme et ton programme va se faire tout seul , mais j'en conviens, ce n'est pas facile ...
Oniria
|
|
mercredi 13 février 2008 à 22:35:09 |
Re : trés urgent(probléme de programmation)

amine52002
|
enfait mon application consiste à faire une description textuelle de mon objet grace au contour externe je pourais faire une description textuelle qui se base sur : decouper le contour en morceau (on va avoir un ensemble de courbes concave convexe ou droite ) l'idée c'est de determiner les equations(primitive simple de degré 2) de ces courbes pour cela je doit faire une approximation par moindre carré (sur cette partie j'ai trouvé un exemple) mais tt d'abord je doit demarrer par un ensemble de points que je doit l'extraire à partir des courbes que j'ai ça veu dire je vais avoir la meme trace dans les points que celle de ma courbe mon grand probléme c'est je suis un debutant en programmation 
|
|
mercredi 13 février 2008 à 22:49:18 |
Re : trés urgent(probléme de programmation)

Caribensila
|
Si j'ai bien compris, mais 'faut s'accrocher :)
2 TImages et un TButton sur une fiche.
var Tableau : array[0..1000] of Tpoint;//Contient les points cliqués. NbrePixels : Integer; //Nbre Pixels cliqués.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); {Peut-être mieux avec MouseMove ?} var i : integer; begin if NbrePixels=0 then for i := 0 to high(Tableau) do Tableau[i] := Point(X,Y); // On initialise Tableau qd 1er pt cliqué. Tableau[NbrePixels] := point(X,Y);//On mémorise les TPoints cliqués dans le tableau, à chaque click. inc(NbrePixels); end;
procedure TForm1.Button1Click(Sender: TObject); {Dessine les pts du tableau ds l'image2} var Bmp : Tbitmap; i : Integer; begin Bmp :=Tbitmap.Create; Bmp.Height := Image1.Picture.Height; Bmp.Width := Image1.Picture.Width; Bmp.Canvas.Brush.Color := clWhite; // Peinture blanche à la brosse. Bmp.Canvas.FillRect(Bmp.Canvas.ClipRect); //On peint le Bmp. //Bmp.Canvas.Polygon(tableau);//Joint chaque pt de Tableau par une ligne noire sur Bmp. for i := 0 to NbrePixels do //ou que les pts. Bmp.Canvas.Pixels[tableau[i].X,tableau[i].Y] := clBlack; Image2.Picture.Bitmap.Assign(Bmp); end;
|
|
mercredi 13 février 2008 à 23:09:58 |
Re : trés urgent(probléme de programmation)

Caribensila
|
Autre version qui te dessine directement une courbe. Mais je ne sais pas si c'est ce que tu cherches, en fait :
var Tableau : array[0..5000] of Tpoint; //Contient les points cliqués. NbrePixels : Integer; //Nbre Pixels ds le tableau.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i : integer; begin NbrePixels := 0; for i := 0 to high(Tableau) do Tableau[i] := Point(X,Y); end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin //vérifie que le bouton gauche est enfoncé. {Trace une ligne de sélection en noir.} Image1.Picture.Bitmap.Canvas.Pixels[X,Y] := clblack; Tableau[NbrePixels] := point(X,Y); inc(NbrePixels); end; end;
procedure TForm1.Button1Click(Sender: TObject); {Dessine les pts du tableau ds l'image2} var Bmp : Tbitmap; i : Integer; begin Bmp :=Tbitmap.Create; Bmp.Height := Image1.Picture.Height; Bmp.Width := Image1.Picture.Width; Bmp.Canvas.Brush.Color := clWhite; // Peinture blanche à la brosse. Bmp.Canvas.FillRect(Bmp.Canvas.ClipRect); //On peint le Bmp. Bmp.Canvas.Polygon(tableau);//Joint chaque pt de Tableau par une ligne noire sur Bmp. Image2.Picture.Bitmap.Assign(Bmp); end;
|
|
mercredi 13 février 2008 à 23:28:09 |
Re : trés urgent(probléme de programmation)

Caribensila
|
Précision pour Amine:
Dans ces 2 exemples, c'est toi qui dessine le contour à la souris. Si tu veux le faire par logiciel, ce n'est plus un truc de débutant...
|
|
mercredi 13 février 2008 à 23:41:42 |
Re : trés urgent(probléme de programmation)

Caribensila
|
... Et si tu pouvais nous montrer l'image sur laquelle tu travailles, ça nous éviterait peut-être de partir dans des trucs compliqués ;)
|
|
jeudi 14 février 2008 à 09:10:28 |
Re : trés urgent(probléme de programmation)

Loda
|
salut,
moi quand j'entends parler de "détecter des contours" je penses tout de suite à une différentielle par calcul matricielle. C'est quand même un des meilleurs moyens...
mais, j'ai comme l'impression que c'est un labo... donc tu devrait t'en tenir à ce que ton prof vous a suggéré...
bon code,
Loda
Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
|
|
Cette discussion est classée dans : programmation, for, bmp, begin, nbcount
Répondre à ce message
Sujets en rapport avec ce message
garder plusieurs images en memoire [ par valkyrie ]
Bonjourj aimerais garder en memoire plusieurs images en meme temps du genrej ai une fenetre avec 6 boutons d opendialogje rentre le nom de l image dan
TChart [ par yannba ]
J'utilise un graphique avec une base de données :procedure CalculGraphique;var i,j:integer; donnees : array [0..1000] of real;begin With Form5.C
exo sur les tableau pour les debutents [ par aom2009 ]
ce programme c'est pour s'exercer sur les tableaux ecrit par aom2009 program tab_de_2dimension; uses crt; {itroduction
résolution sudoku backtrack [ par zwyx ]
Bonjour à tous, Pour ceux qui aiment bien se creuser la tête sur de l'algorithmie... J'ai écrit un code permettant de résoude une grille de sudoku ré
bmpTOjpeg ? [ par Taktaky ]
Salutje peut exporte Image comme .bmp mais je voudrais ausssi comme .jpeg soufgarderfunction BmpToJpeg(bmp:TBitmap):TJpegImage; begin BmpToJpeg
Programmation [ par MohInfo ]
bonjour à tous je veux savoir que fais ce pgm Var n, s : Integer; Begin read(n); s := 0; while s 0 Then Begin s := s + (n mod 10);
Deux Combobox + Edit [ par freezydelphi7 ]
Bonsoir, Cher(e)s, Merci de votre aide [^^happy13] J'ai 2 combobox, le 2ème prend une valeur(une liste de NOMs) suite à la selection d'un choix du 1 c
programmation [ par nmacines ]
bonjour je souhaite savoir svp comment diviser deux champs texte en faite je souhaite faire la division de deux champs notes et coef dans le compos
programmation [ par rachid076 ]
bonjour; je suis un développeur en delphi pendant 8ans, je m'appelle rachid bendahmane. j'ai un problème concernant la base de données, des fois quand
Repeat-Function problem [ par sarssor ]
Salut je suis débutant en Delphi je voudrais avec cet code chercher toutes les Strings dans toutes les Ligne de Listbox mais le code peut trouver max
Livres en rapport
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|