Hallo,
ich hab folgendes Problem:
Ich greife von einer Webcam den Buffer ab und konvertiere diesen zugleich in ein byte[] Array.
Das byte Array hat folgendes Format: [r][g][r][g][r][g][r][g]... und eine länge von 57600 (Das Bild hat eine Aüflösung von 160 x 120).
Jetzt suche ich einen Weg dieses array möglichst schnell in ein int array im format [x][y][rgb] zu konvertieren.
Bisher mache ich das mit folgendem Code:
Das dauert aber viel zu lange (6 bis 14 Millisekunden) und ich muss das ganze in maximal 6 ms hinkriegen.
Hat noch jemand ne Idee wie man das performanter hinkriegen kann?
Grüße Alpha
ich hab folgendes Problem:
Ich greife von einer Webcam den Buffer ab und konvertiere diesen zugleich in ein byte[] Array.
Das byte Array hat folgendes Format: [r][g][r][g][r][g][r][g]... und eine länge von 57600 (Das Bild hat eine Aüflösung von 160 x 120).
Jetzt suche ich einen Weg dieses array möglichst schnell in ein int array im format [x][y][rgb] zu konvertieren.
Bisher mache ich das mit folgendem Code:
Code:
byte[] buffer = (byte[])this.webcam.grabBuffer().getData();
int size = buffer.length;
int x = 0;
int y = 119;
int i = 0;
while(i < size)
{
array[x][y][0] = buffer[i] & 0xFF;
array[x][y][1] = buffer[i+1] & 0xFF;
array[x][y][2] = buffer[i+2] & 0xFF;
i+=3;
if(x == 159)
{
y--;
x = 0;
continue;
}
x++;
}
Das dauert aber viel zu lange (6 bis 14 Millisekunden) und ich muss das ganze in maximal 6 ms hinkriegen.
Hat noch jemand ne Idee wie man das performanter hinkriegen kann?
Grüße Alpha