Как получить значения RGB квадрата 5x5? - PullRequest
2 голосов
/ 07 ноября 2010

Я пишу метод, который используется, чтобы получить значения RGB для квадрата 5x5 пикселей, а затем вычислить средний цвет всех из них. Нам дали пакет для использования, и вот откуда методы .getPixel и тому подобное.

У меня проблемы с получением каждого пикселя в области 5x5. То, что я пробовал, - это запуск цикла и, в конце концов, наличие x ++, поэтому x увеличивается на единицу. Но я понимаю, что это получает только пиксели в верхнем ряду.

Я думаю, что у меня должен быть другой цикл или какой-то вложенный цикл, чтобы получить квадрат 5x5, но я просто не могу понять, как заставить его работать, добавляя значения в переменные красного, зеленого и синего. 1005 *

Есть намеки? Спасибо

private Color tileColor ( Picture pic, int x, int y ) {

  Pixel p;
  Color color;
  int r,g,b;
  int red = 0;
  int green = 0;
  int blue = 0;

  for (int i = 0; i <= 5; i++){

    p=  pic.getPixel(x,y);
    color = p.getColor();

    r = color.getRed();
    g = color.getGreen();
    b = color.getBlue();

    red = red + r;
    green = green + g;
    blue = blue + b;

    x++
  }
}

1 Ответ

2 голосов
/ 07 ноября 2010

как правило, мы можем написать:

for (int x = 0; x < 5; x++) {
    for (int y = 0; y < 5; y++) {
        p =  pic.getPixel(x, y);
        // do something ....
    }
}

Убедитесь, что это 5 пикселей, тогда 0, 1, 2, 3, 4 уже 5 пикселей.

Другое распространенное использование:

for (int dx = 0; dx < 5; dx++) {
    for (int dy = 0; dy < 5; dy++) {
        p =  pic.getPixel(100 + dx, 200 + dy);
        // do something ....
    }
}

, чтобы получить пиксели относительно пикселя (100, 200). dx и dy могут читаться как дельта х и дельта у (небольшие приращения).

...