AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Ränder erkennen von Objekten
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Ränder erkennen von Objekten

Ein Thema von Saminem · begonnen am 20. Jan 2012 · letzter Beitrag vom 27. Jan 2012
 
Saminem

Registriert seit: 18. Aug 2010
14 Beiträge
 
#1

Delphi Ränder erkennen von Objekten

  Alt 20. Jan 2012, 07:31
Moin Leute
Ich hänge in Informatik fest.
Wir müssen nämlich ein Programm schreiben welches Ränder erkennt von ausgefülltern objekten.
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var n,t,pixel1,pixel2,pixel3:integer;
    schwellenwert1,schwellenwert2,schwellenwert3 :extended;
begin
  for n:=1 to hoehe do
  begin
    for t:=1 to breite do
    begin
      pixel1:=image1.Canvas.Pixels[n,t];
      pixel2:=image1.canvas.pixels[n,t-1];
      pixel3:=image1.canvas.pixels[n-1,t];
      schwellenwert1:= (pixel1 * 0.5) + (pixel2 * 0.5);
      schwellenwert2:= (pixel1 * 0.5) + (pixel3 * 0.5);
      schwellenwert3:= (pixel2 * 0.5) + (pixel3 * 0.5);
      if schwellenwert1 = (16777215 * 0.5) then
      begin
        image2.Canvas.Pixels[n,t]:=clblack;
      end;
      if schwellenwert2 =(16777215 * 0.5) then
      begin
        image2.Canvas.Pixels[n,t]:=clblack;
      end;
      if schwellenwert3 =(16777215 * 0.5) then
      begin
        image2.Canvas.Pixels[n,t]:=clblack;
      end;
end;
end;
end;


procedure TForm1.Button4Click(Sender: TObject);
var k,n,t,pixel1,pixel2,pixel3:integer;
    gewichtung1,gewichtung2,gewichtung3:extended;
begin
  k:=6;
  for n:=1 to hoehe -2 do
  begin
    P1:=Image1.Picture.Bitmap.ScanLine[n];
    P2:=Image1.Picture.Bitmap.ScanLine[n+1];
    //P3:=image1.Picture.Bitmap.ScanLine[n];
    for t:=1 to (breite*3) do
    begin
      pixel1:=P1[t+3];
      pixel2:=P2[t+3];
      pixel3:=P1[t+k];
      k:=k+3;
      gewichtung1:= pixel1+pixel2+pixel3;
      if gewichtung1 = 255 then
      begin
        image2.Canvas.Pixels[n,t]:=clblack;
      end;
      if gewichtung1 = 510 then
      begin
        image2.Canvas.Pixels[n,t]:=clblack;
      end
  end;
  end;
Die erste Procedur funktioniert, jedoch meinte mein Lehrer, dass die zu lange braucht und ich es lieber mit der Scanline probieren soll, da die 100 mal schneller ist.
Brauch dirgend hilfe komm einfach nicht weiter.
ergibt mir immer ein Fehler aus in der Zeile wo ich pixel3 berechne.
Danke schonmal im vorraus
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz