wie lese ich die Farbe unterm Maus-Punkt aus?

Spezielle Fragen zu 2D- und 3D-Grafik, Sound und Video
Antworten
gambasso
Foriker
Beiträge: 849
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von gambasso » Sa 13. Aug 2016, 18:16

moin,

ich möchte gerne die Farbe des Pixels unterm 'Mausklick' auslesen. Leider weiss ich nicht wie, und komme auch nicht weiter.
Habe eine PictureBox, woraus ich das Picture als Image auslese.
Beim Mausklick habe ich die X + Y Position innerhalb der PictureBox.
Ich kann vom Image die Pixels in ein Array auslesen.
Aber was weiter? Wie komme ich an die Farbe?
In dem Array sind, je nach Größe des Bildes, 100-Tausende oder mehr Einträge.
Die Einträge haben ein '-' (Minus) Vorzeichen. Dahinter umgerechnet ein Hex-Wert.

Nach dem Anklicken gebe ich den Wert, aus von mir berechnete Position im Array, an einem ColorButton weiter.
Einmal rechne ich erst die X, oder auch die Y-Position. Aber beides bringt mir nicht die Farbe.

Könnt Ihr mir weiterhelfen?
Gruss

Honsek
Foriker
Beiträge: 343
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von Honsek » Sa 13. Aug 2016, 18:53

Hallo gambasso,

sieh hier: http://www.gambas-buch.de/dw/doku.php?i ... .3.5:start

Mit freundlichem Gruß

Honsek
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

gambasso
Foriker
Beiträge: 849
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von gambasso » So 14. Aug 2016, 08:57

moin Honsek,

soweit bin ich ja noch gar nicht. Ich brauche erstmal die Farbinformation vom Punkt des Mausklicks, das steht da nicht bei.
Gruss

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von vuott » So 14. Aug 2016, 15:49

Hallo gambasso,

...von wiki des italienischen Forum:

http://www.gambas-it.org/wiki/index.php ... nato_pixel

besenmuckel
Foriker
Beiträge: 46
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von besenmuckel » So 14. Aug 2016, 16:05

Kannst ja statt ColorButton, den ColorChooser nehmen. Klicke im ColorChooser auf Pipette und dann auf Bild.
http://gambas-buch.de/dw/doku.php?id=k2 ... .1.4:start

Code: Alles auswählen

Public Sub ColorChooser1_Change()

  Print ColorChooser1.SelectedColor 
  Print Hex(ColorChooser1.SelectedColor)

End

gambasso
Foriker
Beiträge: 849
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von gambasso » So 14. Aug 2016, 16:53

hallo,

@ vuott: das klappt wunderbar, obwohl ich es nicht verstehe.
gambas code
Public Sub PictureBox1_MouseDown()
 
 Dim nCol As Integer

' Individuiamo le coordinate x ed y del puntatore del mouse, quando clicchiamo nella "PictureBox" sull'immagine:
  With Mouse
     nCol = im[.X, .Y]
  End With

' Quindi otteniamo il numero del colore del pixel cliccato con il mouse...
  Print "Il numero del colore del pixel cliccato è: "; nCol, "&h"; Hex(nCol, 8)

' ...nonché mostriamo il suo colore nella "TextLabel" posta sul Form:
  TextLabel1.Background = nCol
 
End
Kannst Du das Übersetzen bzw. erklären?

Kann ich auf die gleiche Art und Weise jeden Pixel eine andere Farbe zuweisen?

Es ist viel einfacher, als über ein ColorChooser.
Gruss

besenmuckel
Foriker
Beiträge: 46
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von besenmuckel » So 14. Aug 2016, 17:27

Hallo
verstehe auch kein italienisch. :roll: Vielleicht reicht dir ja die maschinelle Übersetzung.
Individuiamo le coordinate x ed y del puntatore del mouse, quando clicchiamo nella "PictureBox" sull'immagine:
Wir ermitteln die x- und y-Koordinaten des Mauszeigers, wenn wir auf der "Picture" Bild klicken:
Quindi otteniamo il numero del colore del pixel cliccato con il mouse...
So erhalten wir die Pixel-Farbnummer mit der Maus angeklickt ..
Il numero del colore del pixel cliccato è:
Die Pixel-Farbnummer geklickt haben:
...nonché mostriamo il suo colore nella "TextLabel" posta sul Form:
... Und zeigen seine Farbe in "Textlabel" auf dem Formular platziert:

gambasso
Foriker
Beiträge: 849
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von gambasso » So 14. Aug 2016, 18:16

ja, und das ist das Problem. Das geklickte möchte ich, klappt auch. Dann habe ich die Farbe.
Diese Farbe im gesamten Bild möchte ich dann gegen eine andere Farbe tauschen.
Das klappt noch nicht. Aber heute nicht mehr....
Gruss

tux_
Moderator
Beiträge: 946
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von tux_ » So 14. Aug 2016, 20:22

Die Bedeutung dieser einen Zeile von vuott selbststaendig auszuarbeiten sollte nun wirklich nicht so schwer sein, zumal es noch die Dokumentation gibt. Sei "im" ein Image. Dann bekommst du mit den Arrayzugriff-Operatoren "im[x,y]" die Farbe des Pixels an der (x,y)-Position im Bild[1]. vuott benutzt diesen Arrayzugriff zusammen mit der Mouse-Klasse: in einem MouseDown-Eventhandler enthalten Mouse.X und Mouse.Y naemlich die (x,y)-Koordinaten des Mausklicks relativ zum Steuerelement, das das Event ausloest[2] (in diesem Fall die PictureBox). Das bedeutet auch, dass der Code nicht funktionieren wird, wenn die PictureBox Scrollbalken hat oder wenn das angezeigte Bild zu klein fuer die PictureBox ist und damit einen inneren Abstand zum Rand der PictureBox hat. Probier einmal, ein kleines Bild in die PictureBox und dann PictureBox.Alignment auf z.B. BottomRight zu setzen. Bei einem Klick in die untere rechte Ecke auf das Bild wirst du nichts bekommen. Fuer den Code ist das Bild noch immer in der oberen linken Ecke der PictureBox, auf wenn es dort nicht angezeigt wird.

Eine ordentliche Loesung besteht darin, deine eigene kleine PictureBox zu schreiben. In diesem Fall brauchst du nicht mehr als eine DrawingArea, in die du das Picture an eine dir bekannte Position renderst. Diese Positionsinformation kannst du dann benutzen, um den Mausklick relativ zur wirklichen Anzeige des Bildes in Bildkoordinaten zu uebersetzen. Ein Demo-Projekt findest du unten.

Dein letztes Anliegen, die ausgewaehlte Farbe auszutauschen, ueberlasse ich dir. Jetzt, da du weiszt, was die Arrayzugriff-Operatoren auf einem Image machen, ist das kein Problem mehr.
ColorPictureBox-0.0.1.tar.gz
(12.21 KiB) 62-mal heruntergeladen
[1] http://gambaswiki.org/wiki/comp/gb.image/image/_get
[2] http://gambaswiki.org/wiki/comp/gb.qt4/mouse/x
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

gambasso
Foriker
Beiträge: 849
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von gambasso » Mo 15. Aug 2016, 11:28

moin,

ausgelesen geht ja, aber dann das Weitere. ich habe mal eine das Titelblatt eienr Zeitschrift eingescannt. Dieses Bild nehme ich ais Vorlage.
Dann habe ich als Beispiel auf einer gelben Schrift geklickt. Diese Farbe wird dann angezeigt, sowohl als Hintergrundfarbe eines Labels und als Integer-Zahl.
Klicke ich etwas daneben, wird es mir auch angezeigt, aber die Integer-Zahl ist eine andere. In der Farbe kann ich aber kein Unterschied erkennen.

Ich müßte also wissen, wie sich die angezeigte Integer-Zahl zusammensetzt und wo sind die numerischen Abweichungen in einem Bereich, wo ich es normal noch nicht erkennen kann?

Muß ich die Integer-Zahl nach Hex wandeln und was bedeutet dann was?
Gruss

Honsek
Foriker
Beiträge: 343
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von Honsek » Di 16. Aug 2016, 15:05

Hallo Gambasso,

sieh Dir doch mal das Projekt unter 25.3.5.7 Farb-Manipulationen für ein Bild-Pixel genau an -->> http://www.gambas-buch.de/dw/doku.php?i ... bild-pixel

Mit flotten Grüßen
Honsek
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

gambasso
Foriker
Beiträge: 849
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von gambasso » Di 16. Aug 2016, 16:53

Hallo honsek,

mit dem Beispielprogramm kann ich auf dem Bild malen, aber ich erreiche nicht das, was ich möchte.
Ich möchte eine Farbe durch eine andere ersetzen. Das geht im Prinzip auch.
Das hat nur einen Haken: Beispiel eine gelbe Schrift. Rein optisch ist die Schriftfarbe überall gleich.
Klicke ich an verschiedenen Stellen auf die Schrift, erhalte ich fast immer verschiedene Werte,
so daß ich eine Auswertung erstmal nicht hinbekomme. Dabei müßte ich eine Toleranz eingeben können.
Aber wie und wo?
Ich lese mit > color = image[.X,.Y] < aus und wandel es zu Hex und einzelnen RGB-Farbwert (Hex + Dez) um.
Aber wie und wo lege ich die Tolerenz fest.
Bei der oben erwänten gelben Schrift findet das Programm manchmal nur 10 gleiche Pixel. Das siehst Du nach dem Wandeln hinterher kaum.
Drei Klicks > 16707645 16707381 16707393 < drei Werte, obwohl dicht nebeneinader angeklickt.
Da sind dann 10 Pixel andersfarbig, anstelle der ganzen Schrift.
Gruss

tux_
Moderator
Beiträge: 946
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von tux_ » Di 16. Aug 2016, 17:07

Den Unterschied zwischen zwei Farben kannst du mit Color.Distance() quantifizieren lassen [1]. "Color" = "Farbe", "Distance" = "Abstand". Bitte bemueh dich ein wenig selbst, Antworten auf deine Fragen zu finden.

[1] http://gambaswiki.org/wiki/comp/gb.image/color/distance
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

gambasso
Foriker
Beiträge: 849
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von gambasso » Do 18. Aug 2016, 10:31

moin,

mit > Color.Distance() < bringt auch erstmal nicht das Richtige. Wenn ich z.B. alles gelbfarbge rot machen will, werden auch andere Farben mit rot gemacht.

@ tux:
Bitte bemueh dich ein wenig selbst
wo soll ich da suchen? Was ich finde ist sehr wenig, dann noch in englisch und sehr kurz gehalten.
Gruss

mideal
Foriker
Beiträge: 2
Registriert: Mi 31. Aug 2016, 16:14
Wohnort: Wilhelmshaven/Frankfurt
Kontaktdaten:

Re: wie lese ich die Farbe unterm Maus-Punkt aus?

Beitrag von mideal » Di 6. Sep 2016, 13:05

Okay, ich fange mal vorn an, damit der gute Tu entlastt wird.
Schau mal nach was "quantifizieren" bedeutet.
Du scannst ein Magazin in - was-weißich - 16 Mio Farben ein, und erwartest wirklich, das DU einen Unterschied in den einzelnen Bildpunkten sehen könntest?
Schon wenn Du mit der Lupenfunktion des Handys heranszoomst, wirst Du feststellen, dass da ein Raster zu sehen ist. Was gelb ersscheint, kann durchaus mit schwarzen Punkten gespickt sein.
Und jetzt musst Du Dir überlegen, wir Du das handhabst : 4*4 Punkte zusammenfassen, einen Durchschnitt über die einzelnen Werte von R+G+B bilden und die 16 Punkte einfärben? Oder lieber ein 3*3 Raster wählen? oder dafür vielleicht sogar eine gezackte Form wählen, um nicht "Blockgrafiken" zu erzeugen?
Und wenn Du diese Werte dann auf bestimmte Abstufungen (zB 10er-Schritter - da kann man "(x floor 10)*10)" o.ä. verwenden) einschänkst (so dass es z.B. hinterher nur noch 1 Mio Farben geben kann), kommen die kleinen Unterschiede, wie Du sie erwähnst, nicht mehr vor.
DANACH kannst Du anfangen, einzufärben.
Dirk
Gott sei dank gibt's keinen!

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast