Я знаю, что существует довольно много подобных вопросов, но ни один из них, похоже, не решил мою проблему. Я хочу прочитать значения пикселей изображения и сохранить их в двойном массиве. Поскольку изображения только в оттенках серого, я преобразовал значения RGB в значение в оттенках серого. Я также изменил диапазон значений с 0-255
на 0-1
.
Это мой код:
public static double[] getValues(String path) {
BufferedImage image;
try {
image = ImageIO.read(new File(path));
int width = image.getWidth();
int height = image.getHeight();
double[] values = new double[width * height];
int index = 0;
for(int x = 0; x < width; x++) {
for(int y = 0; y < height; y++) {
Color color = new Color(image.getRGB(y, x));
int gray = (color.getRed() + color.getGreen() + color.getBlue()) / 3;
values[index++] = gray / 255d;
}
}
return values;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Однако, когда я использую это для преобразования черного изображения в двойные значения, я ожидайте только 0.0
как значения в массиве. Но то, что я получаю, выглядит примерно так: [0.058823529411764705, 0.058823529411764705, 0.058823529411764705, ...]
Можете ли вы сказать мне, что я делаю неправильно? Спасибо.