Pixelfarbenerkennung

Hallo!

Ich möchte ein Programm schreiben, was immer gleich aufgebaute Bilder analysiert. Wenn zB Pixel P(80/20) blau ist und der Pixel I(40/30) rot ist, soll das Programm irgendwas tun. Ich kenne mich mit Phyton aus und würde das da gerne integrieren, aber jede andere grundlegende Methode ist auch erstmal hilfreich.
Gibt es also eine Möglichkeit, die Pixelfarbe eines bestimmten Pixels auf dem Bildschirm auszulesen?

Danke schonmal!,
Gruß
Paul

Hallo Paul,

Ich möchte ein Programm schreiben, was immer gleich aufgebaute
Bilder analysiert. Wenn zB Pixel P(80/20) blau ist und der
Pixel I(40/30) rot ist, soll das Programm irgendwas tun. Ich
kenne mich mit Phyton aus und würde das da gerne integrieren,
aber jede andere grundlegende Methode ist auch erstmal
hilfreich.
Gibt es also eine Möglichkeit, die Pixelfarbe eines bestimmten
Pixels auf dem Bildschirm auszulesen?

Du meinst doch sicher die Pixelfarbe des Bildes und nicht die Pixelfarbe des Bildschirms?
Nehmen wir mal an, Du möchtest wissen, welche Farbe der erste Pixel des Bildes hat (links oben), also Pixel 0/0 sozusagen. Dann ist dieser Pixel natürlich auf dem Bildschirm nicht unbedingt an der Position 0/0, sondern ganz woanders, je nachdem, wie das Bild im Fenster plaziert ist. Das war jetzt alles etwas vereinfacht gesagt, aber Du verstehst was ich meine? Oder verstehe ich dein Problem völlig falsch?

Viele Grüße
Marvin

Ich möchte eigentlich nicht den Pixel eines Bildes, sondern einen des Bildschirms auslesen; ich denke aber, dass das keinen großen Unterschied macht; vielleich aber schon.
Ich möchte nämlich nicht die Farbe über die Bilddatei auslesen, sondern die aktuelle Farbe eines bestimmten Bildschirmpixels.

Hallo.
Wenn du das Programm unter Windows entwickelst, kannst du dich der WinAPI behelfen.
Mit der Funktion GetDC(0) (http://msdn2.microsoft.com/en-us/library/ms533241.aspx) erhältst du ein Handle auf deinen gesamten Bildschirm. Mit GetPixel (http://msdn2.microsoft.com/en-us/library/ms532282.aspx) erhältst du dann die Farbwerte eines Pixels. Du musst dein Programm auch noch mit „User32.lib“ und „Gdi32.lib“ linken.
Ich hoffe das hilft dir weiter.
In C funktionier das etwa so etwa so:

#include 
#include 
#include 

int main(int argc, char \*argv[])
{
 HDC hdc;
 COLORREF col;
 hdc=GetDC(0);
 col=GetPixel(hdc,100,100);
 printf("%d %d %d ",GetRValue(col),GetGValue(col),GetBValue(col));
 system("PAUSE"); 
 return 0;
}

Liebe Grüße.
Alex

1 Like

Vielen Dank!
Ich habs noch etwas modifiziert, aber es funktioniert!

)