Как отнести RGB значение к 7 основным цветам?

173
02 октября 2019, 19:30

Мне нужно полученное RGB значение пикселя отнести к 7 основным цветам, каким образом это сделать на Java?

Answer 1

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

public int nearestRainbowColor(int color) {
    int[] rainbow = {
            0xff0000, // каждый
            0xff7f00, // охотник
            0xffff00, // желает
            0x00ff00, // знать
            0x42aaff, // где
            0x0000ff, // сидит
            0x8f00ff  // фазан
    };
    int minDiff = Integer.MAX_VALUE;
    int nearestColorIndex = 0;
    for (int i = 0; i < rainbow.length; i++) {
        if (diffBetween(color, rainbow[i]) < minDiff) {
            minDiff = diffBetween(color, rainbow[i]);
            nearestColorIndex = i;
        }
    }
    return rainbow[nearestColorIndex];
}
public static int diffBetween(int c1, int c2) {
    int r1 = c1 / 0x010000;
    int g1 = (c1 % 0x010000) / 0x00100;
    int b1 = c1 % 0x000100;
    int r2 = c2 / 0x010000;
    int g2 = (c2 % 0x010000) / 0x00100;
    int b2 = c2 % 0x000100;
    return Math.abs( r1 - r2 ) + Math.abs( g1 - g2 ) + Math.abs ( b1 - b2 );
}
READ ALSO
Проблема с JAVA_HOME

Проблема с JAVA_HOME

В проекте нажал Invalidate and restart студия закрылась и вдруг выскочило окно

147
Не находит путь до css файлов

Не находит путь до css файлов

Делаю сайт на SpringЕсть страница html,при запуске не отображается графическая часть,а только формы ввода,полагаю дело в том,что java не находит...

129
Как обратиться к айтему списка GridAdapter вне его метода, зная его позицию?

Как обратиться к айтему списка GridAdapter вне его метода, зная его позицию?

Не могу получить нужный мне элемент из ViewHolder'a по позиции, и применить для него некие изменения (заменить background)

100
Подготовка изображения средствами nd4j

Подготовка изображения средствами nd4j

Есть код на питоне для подготовки изображения к классификации:

131