Bildschrimfarben abfragen/erkennen



  • hallo alle zusammen.

    ich habe zur zeit ein kleines probelm:
    ich möchtes das was aktuell auf meinem pc bildschirm angezeigt wird nach farben auswerten das heißt ich will wenn ich zb auf meinem Pc einen Film abspiele jedes Bild auswerten und zwar darauf welche Farbe in diesem Bild vorherschend ist..

    Ein Beispiel: im Film ist zb. eine Uterwassersezene das heißt in diesem fall ist die Vorherschende Farbe wahrscheinlich blau..

    Mein bisheriger ansatzt stellt mich allerdings nicht so zufrieden erstens ist er zu langsam und zweitens sind die farben die ich ermittle nicht wirklich aussagekräftig..

    Folgenden Ansatzt bin ich im moment nachgegangen ..

    Ich verwende C++ und Qt mit hilfe von Qt mach ich zunächst ein einem 16 Pixelraster screenshots von genau einem pixel und bestimm dessen Farbe (in RGB Werten) danach bilde ich den Mittelwert aller Rot , Grün sowie blau werte und lasse mir die Mittelwerstsmischfarbe wieder ausgeben leider kommen dabei sehr dreckige fraben raus.. mir wären aber etwas kräftigere Farben lieber muß ich sagen..

    eine weitere idee ist die häufigste farbe mittels der gaußschen normalverteilung zu finden wobei ich da leider mathematisch keine ahnung habe und bis jetzt noch nicht die zeit gefunden habe mich einzulesen..

    So zu meiner frage gibts ne bessere lösung als screenshots der einzelnen pixel ..

    Wie ermittel ich am besten die vorherschende farbe..

    gruß Dominik



  • also ich hab mich heut mal mit diversen sachen probiert darunter sdl und opengl allerdings finde ich das man da wenig im netz zu findet.. vorallem weil ich ja weiterhin auf Qt basis bleiben will..

    kennt jemand eine möglichst schnelle und einfache methode direkt auf den Framebuffer zuzugreifen?

    Denn über die Screenshotsache ist das nicht wirklich der hit..



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • 1. die beschreibung, wie du es machst ist nciht der hit (kenn mich da nicht aus..)
    2. kannst du mir bitte kurz sagen, wie du screenshots in qt machst?
    3. geht es vielleicht so: screen machen und auf 1px*1px scalieren (es sollte dafuer eigentlich genug bibliotheken geben)

    mfg aman..



  • hi leider ist mein programm grad auf meinem dritten rechner und ich hab grad keine zeit alles umzustöpseln werde es aber morgen oder übermorgen posten ich hoffe das reicht dir..

    wie du meintest hab mach ich immer ein 1*1 pixel großes screenshot.. in einem 16pixel raster..

    gruß
    Dominik



  • Haeh?

    Ich meinte, du koenntest vielleicht ein Screenshot machen (zB 1400*1050) und es dann auf 1x1px scalieren, ganz ohne irgendeinem Raster.



  • @ aMan tut mir leid versteh nicht ganz was du meinst wenn ich das auf 1*1 pixel scaliere was kann ich den dann noch über den Farbinhalt aussagen..

    Also mitlerweile weiß ich persönlich gar nicht mehr wie ich noch an die sache rangehen soll

    hatte zwar schon verschiedene Ansätze jetzt aber keiner hat mich wirklich weit gebracht.

    Also hier nochmal ein Verzweifelter hilferuf da mein bisheriges programm in Qt geschrieben ist möchte ich nicht unbedingt auf SDL oder sonstiges umsteigen..
    gibts nicht eine möglichkeit über irgend eine klasse/funktion einfach auch die RGB werte eines pixels an x,y im videospeicher /buffer zuzugreifen?

    Help..

    gruß Dominik



  • Im Pixel werden ja die RGB Werte gespeichert, zB (255,0,127). Dann weißt du, dass das Bild zu 66% rot und 34% blau ist.

    Oder meintest du was ganz anderes?

    MfG aMan..



  • ne ne das mein ich schon, jedoch reden wir da wohl aneinander vorbei..

    Wobei ich jetzt sagen muß das die idee mit dem screenshot nicht wirklich funktioniert das ist viel viel zu langsam für meine zwecke.. bzw die Funktion der Qt klasse ist einfach zu langsam..

    leider brauch ich da ne andere lösung...


Anmelden zum Antworten