Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Scanline: Punkt finden (https://www.delphipraxis.net/119663-scanline-punkt-finden.html)

Larsi 29. Aug 2008 12:36


Scanline: Punkt finden
 
Hi,
wie kann ich schnell via Scanline ein Bild nach einen roten Punkt durchsuchen und dann die Position von dessen herausfinden?

MFG Lars Wiltfang

angos 29. Aug 2008 13:49

Re: Scanline: Punkt finden
 
hi,


wenn du dir das hier auf deine Bedürfnisse umbaust, solltest du das herausbekommen. In dem Beispiel wird halt ein Pixel rot eingefärbt. mit kurzem überlegen dürfte das dann aber klappen:

bitmap tutorial


HTH

Gruß
Ansgar

DeddyH 29. Aug 2008 13:55

Re: Scanline: Punkt finden
 
Abgesehen davon muss man sich im Vorfeld überlegen, was ein "roter Punkt" eigentlich ist (Farb-Annäherung).

Larsi 29. Aug 2008 14:37

Re: Scanline: Punkt finden
 
Zitat:

Zitat von angos
hi,


wenn du dir das hier auf deine Bedürfnisse umbaust, solltest du das herausbekommen. In dem Beispiel wird halt ein Pixel rot eingefärbt. mit kurzem überlegen dürfte das dann aber klappen:

bitmap tutorial


HTH

Gruß
Ansgar

Ja, das ist mir bereits bekannt aber irgendwie verstehe ich nicht wie ich das "umbauen" kann sodass es bei mir funktioniert. Probier jetzt schon seit 20 Minuten rum aber irgednwie kapiers ichs nicht.

inherited 29. Aug 2008 14:41

Re: Scanline: Punkt finden
 
statt p^[3] etwas zuzuweisen, prüfst du halt die Farbwerte. Ich verstehe nicht wo dein problem ist, und "geht nicht" ist auch keine hinreichende Beschreibung (d)eines Problems

Larsi 29. Aug 2008 14:43

Re: Scanline: Punkt finden
 
Zitat:

Zitat von inherited
prüfst du halt die Farbwerte.

Da fängts ja bei mir schon mit den PRoblemen an, nämlich wie mache ich das?

angos 29. Aug 2008 14:47

Re: Scanline: Punkt finden
 
du musst erstmal das hier für dich klären
Zitat:

Zitat von DeddyH
Abgesehen davon muss man sich im Vorfeld überlegen, was ein "roter Punkt" eigentlich ist (Farb-Annäherung).


dann musst du doch einfach den Teil aus dem Tutorial, wo der wert zugewiesen wird umbauen und danach abfragen.

Beispiel(ungetestet):
Delphi-Quellcode:
procedure TForm1.MakeRed(Bit: TBitmap);
type
  PixArray = array [1..3] of Byte;
var
  p: ^PixArray;
  h,w: Integer;
begin
  for h:=0 to Bit.Height-1 do
  begin
    p:= Bit.ScanLine[h];
    for w:=0 to Bit.Width-1 do
    begin
      if (p^[3]=255) then
      begin
        showmessage('Juchhu!!! Zeile: ' + IntToStr(h) + ' Spalte ' + IntToStr(w));
      end;
      Inc(p);
    end;
  end;
end;

[EDIT] 20mins... da kann man auch mal länger suchen ;)


[edit 2]
Zitat:

Da fängts ja bei mir schon mit den PRoblemen an, nämlich wie mache ich das?
na (ganz einfach) so:
Delphi-Quellcode:
  p^[1] // Entspricht dem Blau-Anteil
  p^[2] // Entspricht dem Grün-Anteil
  p^[3] // Entspricht dem Rot-Anteil

Larsi 29. Aug 2008 15:38

Re: Scanline: Punkt finden
 
Zitat:

Zitat von DeddyH
Abgesehen davon muss man sich im Vorfeld überlegen, was ein "roter Punkt" eigentlich ist (Farb-Annäherung).

Also ich habe jetzt mit meiner Webcam ein Bild gemacht, dass abgespeichert und dann diese Routine von angos verwendet. Das Problem ist nur dass diese immer Punkte auf meiner Haut ausgibt und nicht zum Beispiel von dem roten Stift in meiner Hand. Woran liegt das? Kann man da irgendwas machen?

p80286 29. Aug 2008 15:43

Re: Scanline: Punkt finden
 
Hallo Lars,

versuch doch einmal heraus zu bekommen welche Werte Dein "roter" Stift hat.

Zitat:

na (ganz einfach) so:
Delphi-Quellcode: markieren
p^[1] // Entspricht dem Blau-Anteil
p^[2] // Entspricht dem Grün-Anteil
p^[3] // Entspricht dem Rot-Anteil




Gruß
K-H

DeddyH 29. Aug 2008 15:46

Re: Scanline: Punkt finden
 
Das heißt also, rot ist nicht (nur) clRed. Ich würde es dann als "rot" bezeichnen, wenn die Grün- und Blauanteile recht niedrig, der Rotanteil aber ziemlich hoch ist. Wo man nun bei den beiden Begriffen "recht" und "ziemlich" aus dem vorherigen Satz die Grenze setzt, das ist die Kunst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 Uhr.
Seite 1 von 2  1 2      

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