Мне нужно преобразовать 2D-массив данных интенсивности пикселей изображения в градациях серого в изображение. Я пробовал это:Преобразование 2D-массива в Java в изображение
BufferedImage img = new BufferedImage(
regen.length, regen[0].length, BufferedImage.TYPE_BYTE_GRAY);
for(int x = 0; x < regen.length; x++){
for(int y = 0; y<regen[x].length; y++){
img.setRGB(x, y, (int)Math.round(regen[x][y]));
}
}
File imageFile = new File("D:\\img\\conv.bmp");
ImageIO.write(img, "bmp", imageFile);
, где «регенс» представляет собой двумерную двумерную матрицу. Я получаю вывод, похожий, но не точный. Есть несколько пикселей, которые полностью противоположны тому, что должно быть (я получаю черный цвет для пикселя, который имеет значение 255). Мало серые оттенки также воспринимаются как белые. Можете ли вы сказать мне, в чем ошибка, которую я делаю?
Выстрел в темноте: возможные проблемы округления с двойной Int? – Zavior
Нет, это не проблема. Я думаю, что почти все пиксели уже являются целыми числами. они просто в двойном массиве. также для оставшихся немного, пиксельные значения слишком близки к int .. например: у меня есть 254.9999999999 за 255, поэтому он должен округлить до 255. –