Java: обнаружение цвета (например, мой цвет синий?)

StackOverflow https://stackoverflow.com//questions/10706006

  •  13-12-2019
  •  | 
  •  

Вопрос

Я имею дело с проектом в Java, который загружает изображение и найти цветную информацию каждого пикселя.Мне нужно обнаружить небо на определении цвета, которое может показаться небом - использование синего цвета цвета.Первоначально это казалось лучше, чтобы использовать RGB, но это требует определения всех оттенков синего (неисчисляемого).Я нашел метод анализа, где используются пороги HSV для каждого цвета, но не имеют представления о том, как я могу загрузить некоторые библиотеки, используя цветовые диапазоны, соответственно, как это можно решить.Спасибо за любую помощь.

Это было полезно?

Решение

Вы можете преобразовать генеракодицетагкод к его значениям HSV, используя статический метод java.awt.Color.Затем вы можете получить оттенок и сравнить его с границами диапазона, который - для ваших целей - представляет собой «синий» - E.G.

private static final float MIN_BLUE_HUE = 0.5f; // CYAN
private static final float MAX_BLUE_HUE = 0.8333333f; // MAGENTA

public static boolean isBlue(Color c) {
  float[] hsv = Color.RGBtoHSB(c.getRed(), c.getGreen(), c.getBlue(), null);
  float hue = hsv[0];
  if (hue >= MIN_BLUE_HUE && hue <= MAX_BLUE_HUE){
    return true;
  } 
  return false;
}
.

Я предложил несколько стартовых ценностей для RGBtoHSB(...) и MIN_BLUE_HUE, но то, что вы устанавливаете MAX_BLUE_HUE и MIN_BLUE_HUE, чтобы вы будете зависеть от того, что вы готовы принять как «синий» - то есть насколько зеленый или фиолетовый может быть, и этовсе еще быть приемлемым как небо?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top