Farbwerte eines Bildes auslesen
-
Hi
Ich möchte mich mal etwas in Richtung Mustererkennung beschäftigen.
Doch dazu sind für die praktische Umsetzung in C++ einige Grundkenntnisse notwendig. Nun möchte ich mal folgendes Wissen:Wie kann ich einen Bereich auf dem Bildschirm, unabhängig welche Fenster geöffnet sind, definieren und dann den Farbwert (Hexcode) jedes einzelnen Pixels innerhalb dieses Bereichs auslesen?
Habe ich zum Beispiel ein Bild mit folgendem Muster:
Rot Rot Rot
Rot Schwarz Rot
Rot Rot Rotsollte ich anschliessend folgendes Ergebnis erhalten:
FF0000 FF0000 FF0000 FF0000 000000 FF0000 FF0000 FF0000 FF0000
Kann mir da evtl. jemand weiterhelfen und sagen, wie man soetwas in C++ realisieren kann?
Vielen Dank schonmal im Voraus für eine Antwort ;).MfG Samuel
-
Mit Standard-C++ geht das nicht. Da brauchst du entsprechende Grafikbibliotheken. Wie man einen willkürlichen Bereich auf dem Bildschirm erkennt, weiss ich jetzt nicht gerade, aber ich denke, mit betriebssystemspezifischen Funktionen könnte das gehen. Vielleicht gibt es dafür auch schon fertige Bibliotheken...
-
Stichwörter :
-HWND, FindWindow()
-HDC, GetDC(), GetPixel()Erkundige dich.
-
FreakY<3Cpp schrieb:
Stichwörter :
-HWND, FindWindow()
-HDC, GetDC(), GetPixel()Erkundige dich.
Du willst nicht erzählen die GDI sei eine Bildverarbeitungsbibliothek, oder?
OpenCV, die Standard-Bibliothek für Bildverarbeitung.
- plattformunabhängig,
- effizient
- enthält viele der elementaren algorithmen
- Lade/Speicher-routinen für sehr viele geläufige und weniger geläufige Pixelgrafik-formate
- kapselt zugriff auf Kameras und videos
-
Aber für das was er will, langt es und diese paar Funktionen reichen aus. Außerdem habe ich nichts erzählt oder behauptet

-
wenn du einen beliebigen bereich des Bildschirms auslesen willst, geht das ganz einfach
unter windows:HDC hdc = GetDC(0); COLORREF col = GetPixel(hdc, x, y);Allerdings wird das nur mit per GDI gezeichneten Bildern gehen. Wenn das gewollte ein Grafikkartenoverlay ist, bekommst du an der stelle nur müll.
allerdings sollte rot 0x0000ff sein, oder? Bin mir aber auch grad nicht sicher.