AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Scanline: Punkt finden
Thema durchsuchen
Ansicht
Themen-Optionen

Scanline: Punkt finden

Ein Thema von Larsi · begonnen am 29. Aug 2008 · letzter Beitrag vom 3. Sep 2008
Antwort Antwort
Seite 2 von 2     12   
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#11

Re: Scanline: Punkt finden

  Alt 3. Sep 2008, 17:13
Hier mal ein Versuch, nicht getestet.
Delphi-Quellcode:
{packed ist wichtig, sonst werden durch die Speicherausrichtung eventuell für jede Variable 4 Byte reserviert}
type
  PPixel24Bit = ^TPixel24Bit;
  TPixel24Bit = packed record
    Blue,
    Green,
    Red: Byte;
  end;

procedure TFTest.MakeRed(Bit: TBitmap);
const
  Schwellwert = 25; {willkürliche Festlegung ab wann ein Pixel als Rot gilt}
var
  Merker: record
    d: Integer;
    x, y: Integer;
  end;
  p: PPixel24Bit;
  x, y: Integer;
  d1, d2, d: Integer;
begin
  {Pixelformat muss hier pf24Bit sein, sonst stimmen die Werte nicht
   und es könnte sogar eine Zugriffsverletzung geben}

  Bit.Pixelformat := pf24Bit;
  Merker.d := 0;
  Merker.x := 0;
  Merker.y := 0;

  for y := 0 to Bit.Height - 1 do
  begin
    p := Bit.ScanLine[y];
    for x := 0 to Bit.Width - 1 do
    begin
      {sehr vereinfachte Ermittlung wie stark der Rotanteil überwiegt, geht auch besser}
      d1 := p.red - p.blue;
      d2 := p.red - p.green;
      d := Min(d1, d2);
      {Pixel mit der höchsten Rotdifferenz merken}
      if d > Merker.d then
      begin
        Merker.d := d;
        Merker.x := x;
        Merker.y := y;
      end;
      Inc(p);
    end;
  end;
 
  if Merker.d > Schwellwert then
    ShowMessage(Format('Juchhu!!! Zeile: %d Spalte: %d', [Merker.y, Merker.x]));
end;
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Scanline: Punkt finden

  Alt 3. Sep 2008, 17:55
Such hier im Forum mal nach HSL. Ggf. kannst du dir auch die Graphics32 anschauen. Für den Rest bitte das Gehirn einschalten.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz