Hauptfarbe eines jeden Pixels erkennen ...wie ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
3dhubiflieger
Beiträge: 123
Registriert: 27.10.2013 12:13

Hauptfarbe eines jeden Pixels erkennen ...wie ?

Beitrag von 3dhubiflieger »

Also ich möchte die Hauptfarbe eines Pixels ermitteln. Ich weiss Pixel = Point(x,y), Ok.
Jetzt ist das aber der RGB Wert....Ok, ich kann die Sache noch in die 3 Hauptfarben zerlegen.
Aber wie kann ich jetzt feststellen ob der RGBWert ein grünes Pixel, ein Rotes Pixel oder ein braunes Pixel ist ? Die Abstufungen der einzelnen RGBWerte sind mir nicht wichtig. Ich will einfach nur wissen um was es für eine Farbe es sich im RGBwert handelt. Egal ob helles oder dunkles Grün, helles oder oder dunkles Rot....Gibt es da irgendwie ne Lösung ?

Ich hab da was von Stargate gefunden.

Code: Alles auswählen

Procedure.f DistanceRGB(Color1, Color2)
 ProcedureReturn Sqr( Pow(Red(Color1)-Red(Color2),2) + Pow(Green(Color1)-Green(Color2),2) + Pow(Blue(Color1)-Blue(Color2),2) ) / Sqr(255*255*3)
EndProcedure



Aber wenn ich in Color1 = $006600 einsetze (Grünwert aus Farbtabelle) und in Color2 den aktuellen Pixelwert ->Point(X,Y) ist die Differenz bei manchen Pixeln geringer, obwohl diese auf dem Bildschirm keinen Grünwert darstellen !? ...Will halt einfach nur die Hauptfarbe des Pixel finden. Am besten mittels String als Rückgabewert....Hoffe ihr versteht mein Problem
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Hauptfarbe eines jeden Pixels erkennen ...wie ?

Beitrag von NicTheQuick »

Am einfachsten ist es du rechnest den RGB-Wert in einen HSV-Wert um. Wenn du hier nach HSV suchst, müsstest du genug dazu finden.
Antworten