Ich hoffe, ich habe (trotz meines ersten Beitrages) das richtige Forum erwischt und dass das Thema noch zu Anfängerproblemen gehört.
Es handelt sich um folgendes. Ich habe per OpenGL eine Textur aus einem Videodatenstrom erstellt. Die Randbereiche dieser Textur habe ich in mehrere Teilbereiche aufgeteilt. Nun möchte ich von diesen Randbereichen jeweils die Farbpixelwerte auslesen und zu einem Durchschnittsfarbwert zusammenrechnen. Vielleicht könnte man es über ein Schleifensystem lösen? Z.B. die Aufteilung der Texturränder in Bereiche und dann anschließend für jeden Teilbereich die Errechnung des Farbwertes? Mit dem Code dazu tapp ich allerdings leider noch im Dunkeln:noe:
Könnte mir hier jemand dabei helfen, wie ich dieses Vorhaben über Java realisiere? Bin für jede Hilfe dankbar!
Also wenn ich das richtig verstanden habe hast du eine Textur mithilfe von OGL und FBOs erstellt, die Daten zurück auf die CPU gestreamt und hast jetzt die Textur als RGBA array vorliegen.
Ja?
Denn dann ist der gesammte OGL Part in deiner Beschreibung überflüssig und verwirrend
Um den Durschnitt zu berechnen bleibt dir allerdings nichts anderes übrig als alle Werte zusammenzurechnen und durch die Anzahl der Werte zu teilen.
Da könnte je nach Texturgröße bzw Anzahl der Daten zu einem Problem führen aber eine andere Methode ist mir nicht bekannt als diese
(RGBA1 + RGBA2 + RGBA3) / 3
Wie sind denn deine Daten gegeben?
Java:
array[][][] rgbas;float[] rgba;int anzahl = rgbas.length *2+ rgbas[].length *2-4;// (Ecken abziehen damit nicht doppelt)for(int i =0; i < rgbas.length; i++){
rgba[0]+= rgbas[i][0][0];
rgba[1]+= rgbas[i][0][1];
rgba[2]+= rgbas[i][0][2];
rgba[3]+= rgbas[i][0][3];}// das selbe für die anderen 3 Ränder (Ecken nicht mehrfach dazu zählen!)// Mittelwert
rgba[0]/= anzahl;
rgba[1]/= anzahl;
rgba[2]/= anzahl;
rgba[3]/= anzahl;
Deine Frage macht mich aber gerade stutzig. Du verwendest OGL stellst aber eine Anfängerfrage...
Hey, danke für die Antwort. Ich glaube, das hilft mir schon weiter!
Haha, ja, haben OGL gerade in der Uni behandelt, d.h. da ist noch alles frisch! Java war leider noch nie mein Lieblingsgebiet, allerdings macht ein aktuelles Projekt gerade wieder Lust, vielleicht doch mal wieder genauer reinzusehen!
Ich werde mal sehen, was ich noch erreiche, sollte ich nochmal auf Probleme stoßen, melde ich mich!
Also Kommando zurück, hab vorhin bissl Müll erzählt. Also die Berechnung ist schon geschehen (hab mich nochmal mit meinem Kumpane kurzgeschlossen). Haben praktisch die Textur schon auf die Anzahl der LED's am Bildschirmrand reduziert (Ziel ist ein Ambilight-Klon), d.h. wir haben oben bspw. 20 LEDs und an den Seiten bspw. 10 LEDs.
Meine Frage ist nun (irgendwie komplett anders als meine Ursprungsfrage, sorry):
Wie lese ich jetzt nur die Randpixel mit Java aus? Hatte an einen Algorithmus gedacht, der praktisch von oben nach unten zeilenweise das Bild abläuft. Dabei muss in der ersten Zeile jedes Pixel ausgelesen werden (weil oberer Bildschirmrand). Ab der zweiten bis zur vorletzten Zeile dann jeweils nur noch das erste und das letzte Pixel der Zeile (Bildschirmseiten). In der letzten Zeile dann wieder alle (unterer Bildschirmrand).
Hoffe, es ist verständlich und dickes Sorry für den irritierenden Einstiegspost, stand wohl etwas auf dem Schlauch..:noe: