Я попытался сохранить изображения, полученные от Kinect в виде png. Я взял образец пакета из пакета, который показывает как глубину, так и цветное изображение на двух плоскостях, и я их модифицирую. Я пробовал разные подходы, такие как сохранение цвета32 напрямую или перенос его на другую текстуру, но никто не работал. Примечание. Я вижу оба изображения, отображаемые на двух плоскостях в сцене Unity. Вот код, который я должен сохранить.сохраненные изображения из kinect черные
void Update() {
if (kinect.pollColor())
{
tex.SetPixels32(mipmapImg(kinect.getColor(),640,480));
// Code by me to save the image
byte[] bytes = tex.EncodeToPNG();
File.WriteAllBytes("screenshots/testscreen-" + imageCount + ".png", bytes);
imageCount++;
//
tex.Apply(false);
}
}
private Color32[] mipmapImg(Color32[] src, int width, int height)
{
int newWidth = width/2;
int newHeight = height/2;
Color32[] dst = new Color32[newWidth * newHeight];
for(int yy = 0; yy < newHeight; yy++)
{
for(int xx = 0; xx < newWidth; xx++)
{
int TLidx = (xx * 2) + yy * 2 * width;
int TRidx = (xx * 2 + 1) + yy * width * 2;
int BLidx = (xx * 2) + (yy * 2 + 1) * width;
int BRidx = (xx * 2 + 1) + (yy * 2 + 1) * width;
dst[xx + yy * newWidth] = Color32.Lerp(Color32.Lerp(src[BLidx],src[BRidx],.5F),
Color32.Lerp(src[TLidx],src[TRidx],.5F),.5F);
}
}
return dst;
}
Я добавил три строки к образцу кода, который отмечен комментариями в функции «Обновить». Я также попытался изменить Update на LateUpdate, но ничего не изменилось.
Если вы попытаетесь выполнить регистрацию любых значений из 'Color32 [] src', вы получите ожидаемые значения цвета (в основном не все 0,0,0)? – Serlite
Нет, не все 0s. И я сопоставил текстуры (одно изображение и одну глубину) до двух плоскостей, и я вижу изображение на самолетах. – D3GAN
Hm ... как насчет регистрации значений, которые вы извлекаете при повторении по массиву? Какой диапазон значений вы возвращаете для TLidx, TRidx, BLidx, BRidx? Также варьируется от 0 до 255? – Serlite