getRGB (x, y) в Java возвращает awt для каждого пикселя одинаковое значение - PullRequest
0 голосов
/ 26 марта 2019

Я попытался пройтись по изображению, взять каждое значение цвета RGB из всех пикселей и обработать их. Но я получаю для всех пикселей одинаковое значение RGB. Очевидно, что это неправильно.

Я использовал getRGB (x, y) метод bufferedimage объекта в Java awt. Кто-нибудь знает в чем здесь проблема?

Edit:

У меня проблема, были некоторые ошибки при преобразовании изображения в буферизованное изображение. Я не рисовал изображение в буферизованном изображении. Следующий код теперь работает как задумано.

    public void printImgDetails(Image img) {

    // get the sizes of the image
    long heigth = img.getHeight(null);
    long width = img.getWidth(null);

    // hashSet to hold all brightness values
    HashSet<Float> set = new HashSet<Float>(0);

    BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_BYTE_GRAY);
    int rgb;
    float[] hsv = new float[3];

    // Draw the image on to the buffered image
    Graphics2D bGr = bimage.createGraphics();
    bGr.drawImage(img, 0, 0, null);
    bGr.dispose();

    for (int i = 0; i < width; i++) {
        for (int j = 0; j < heigth; j++) {
            Color c = new Color(bimage.getRGB(j, i));

            int r = c.getRed();
            int g = c.getGreen();
            int b = c.getBlue();

            Color.RGBtoHSB(r, g, b, hsv);
            System.out.println("r: " + r + " g: " + g + " b: " + b);
            set.add(hsv[2]);
        }
    }

    // calculate the average brightness
    double sum = 0;
    for (float x : set) {
        sum += x;
    }
    double avg = sum / set.size();

    // print the results
    System.out.println("avg --> " + avg);

}

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Когда я писал в редакторе, возникла проблема при преобразовании изображения в изображение с буферизацией.Я забыл нарисовать изображение в bufferediamge.Вот и все.

0 голосов
/ 26 марта 2019

Если вы получаете одинаковые значения для каждого пикселя, есть несколько возможных причин.

a) ваше изображение имеет одинаковые значения в каждом пикселе

b) вы не меняете x и yмежду вашими звонками на getRGB

в) вы читаете что-то еще, кроме возвращаемого значения getRGB

...