2013-09-08 2 views
0

Как вы находите имя цвета пикселя в Java? Я нашел значения RGB пикселя, но понятия не имею, как получить название «желтый» из пикселя.Как получить название цвета RGB?

+0

не всегда должно быть определенное имя для цвета в настройках значения rgb. Иногда это будет просто коллекция красных, синих и зеленых пикселей в качестве имени. – user2277872

+0

Вы ожидаете 16,777,216 (1) разных цветов? 1) количество цветов, которые могут быть представлены с использованием 256 значений R, G и B. –

+0

Возможный дубликат [Как получить название цвета с помощью Color Chooser в java] (http://stackoverflow.com/questions/1654582/ how-to-get-name-of-color-using-color-chooser-in-java) или [этот вопрос] (http://stackoverflow.com/q/8952975/418556) или [этот вопрос] (http: //stackoverflow.com/q/15246526/418556) .. –

ответ

2

Я не сталкивался с частью Java API, которая позволяет это сделать. Это функция, которую вам, скорее всего, потребуется реализовать самостоятельно, тем более, что не все цветовые комбинации rgb будут иметь имена.

Одно место, где вы можете начать, - создать таблицу поиска, используя значения и имена цветов rgb, указанные на сайте, например Wikipedia list of colors page.

Однако, поскольку не каждая комбинация значений rgb будет отображаться на определенный цвет, вам нужно будет разработать алгоритм для сопоставления набора значений с ближайшим цветом. Это может быть что-то вроде вычислений средней квадратичной ошибки между значением rgb для пикселя и значениями rgb для каждого имени цвета. Затем вы можете выбрать название цвета с наименьшим результатом.

Вот суть с некоторым кодом (обратите внимание, однако, он не может скомпилировать), которая иллюстрирует, как класс ColorNameLookup, который вычисляет среднюю квадратическую ошибку, чтобы найти ближайшее соответствующее имя цвета может работать: https://gist.github.com/nightlark/6482130

+0

Могу ли я просто использовать это и принять ваше уравнение и ваш список цветов? { robot = new Robot(); Цвет color = robot.getPixelColor (x, y); System.out.println («Перейдите к точке на экране и не навешивайте ее в поле (дает RBG)»); System.out.println ("Красный =" + color.getRed()); System.out.println ("Зеленый =" + color.getGreen()); System.out.println ("Blue =" + color.getBlue()); – user2758220

+0

Если я правильно понимаю ваш вопрос, то да.Нет гарантий, что это будет наиболее точное отображение цвета по названию цвета; он, вероятно, не будет обрабатывать определенные цвета очень хорошо, так как вы можете иметь красноватый цвет, который имеет относительно низкое значение для красного. Версия, которая будет возвращать имена цветов, которые имеют больше смысла, вероятно, приведет к представлению HSV (Hue, Saturation, Value) цвета, а затем просмотрит ближайшее соответствие для оттенка. Вам придется поиграть с ним, чтобы посмотреть, что дает результаты, которые имеют наибольший смысл. – Ryan

2

есть некоторые стандартные цвета в java и другие могут быть сгенерированы с использованием конструкторов RGB или HSB. нет способа получить название цвета, так как может быть много комбинаций значений RGB (256 x 256 x 256). Только несколько комбинаций имеют название (стандартные цвета, такие как белый, красный, желтый, черный и т. Д.)

+0

Я пытаюсь это сделать, когда я перемещаю мышь, чтобы появилось название цвета. У меня есть где у меня RGB появится в окне, но не в названии цвета. Если это более полезно – user2758220

+0

* «Если это более полезно» * Нет, не совсем, если вы, похоже, не заметили, что этот ответ говорит (в принципе) «невозможно». –

1

Уверен, у вас есть основная проблема с вашим вопросом.

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

Это означает, что на ваш вопрос не может быть получена 100% -ная правильность, пока эта карта не будет с вами. Но да, вы можете определенно найти название цвета для цветов, определенных в классе java.awt.Color.

Итак, вы можете также использовать отражение в java, чтобы узнать список общедоступных статических окончательных свойств цвета, определенных в java.awt.Color, и для каждого значения RGB, которое у вас есть, вы можете сравнить его по всем объявленным Color в java.

+0

Поэтому мне просто нужно составить список и чем сравнивать его с именами цветов. Как я получу его как можно ближе к фактическому названию цвета? Как бы выглядело уравнение? – user2758220

+0

* «Но да, вы можете определенно найти название цвета для цветов, определенных в классе' java.awt.Color'. »* Все 14 из них. Из возможных 16.7+ миллионов это неплохо ... это ужасно. * –

Смежные вопросы