У меня есть устройство захвата, которое возвращает RAW 640x480 BGR. Документы для его поддержки имеют только примеры кода .net / C #.
Вот пример кода, который они имеют в .net SDK
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0,
bmp.Width,
bmp.Height),
ImageLockMode.WriteOnly,
bmp.PixelFormat);
Marshal.Copy(faceImage, 0, bmpData.Scan0, faceImage.Length);
bmp.UnlockBits(bmpData);
Вот самое близкое, что у меня есть в Java, но цвета все еще выключены
int nindex = 0;
int npad = (raw.length / nHeight) - nWidth * 3;
BufferedImage bufferedImage = new BufferedImage(nWidth, nHeight, BufferedImage.TYPE_4BYTE_ABGR);
DataBufferByte dataBufferByte = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer());
byte[][] bankData = dataBufferByte.getBankData();
byte brgb[] = new byte[(nWidth + npad) * 3 * nHeight];
System.arraycopy(raw, 0, brgb, 0, raw.length);
for(int j = 0; j < nHeight - 1; j++)
{
for(int i = 0; i < nWidth; i++)
{
int base = (j * nWidth + i) * 4;
bankData[0][base] = (byte) 255;
bankData[0][base + 1] = brgb[nindex + 1];
bankData[0][base + 2] = brgb[nindex + 2];
bankData[0][base + 3] = brgb[nindex];
nindex += 3;
}
nindex += npad;
}
ImageIO.write(bufferedImage, "png", bs);
Красный и зеленый цвета, кажется, перевернуты. Ценю ваш отзыв, чтобы исправить это. Спасибо!