Einzelnen Beitrag anzeigen

Saminem

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

Delphi Ränder erkennen von Objekten

  Alt 20. Jan 2012, 08: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