0

2 色ありますが、同じ色で色合いが違うだけかどうかを確認するにはどうすればよいですか? 私は試してきましたが、私はそれを理解できないようです.私は本当に自分が何をしているのかわかりません笑...これは私がこれまでに持っているものです:

import java.awt.Color;

public class Sandbox {

    public Sandbox() {
        Color c = new Color(5349322);
        int r, g, b;
        r = c.getBlue();
        g = c.getGreen();
        b = c.getRed();
        System.out.println("Red: " +  r);
        System.out.println("Green: " + g);
        System.out.println("Blue: " + b);
    }

    private boolean FindColorTol(int intTargetColor, int Tolerance) {
        Color targetColor = new Color(intTargetColor);
        Color imgColor = new Color(5349322);
        int targetRED = targetColor.getBlue(),
            targetGREEN = targetColor.getGreen(),
            targetBLUE = targetColor.getRed(),
            imgRED = imgColor.getBlue(),
            imgGREEN = imgColor.getGreen(),
            imgBLUE = imgColor.getRed();

        return false;
    }

    private int getLargest(int...values) {
        int largest = 0;
        for(int i = 0; i < values.length; i++) {
            if(values.length > i + 1) {
                if(values[i] > values[i + 1]) 
                   largest = values[i];
               else 
                   largest = values[i + 1];
           }
       }
        return largest;
    }

    public static void main(String[] args) {
        new Sandbox();
    }
}

また、Color.getRed() が青の値を返し、Color.getBlue() が赤の値を返すのはなぜですか? これを使用して RGB 値を見つけています: http://www.colorschemer.com/online.html

これを使用して、画像内の指定された色を見つけようとしています。

4

2 に答える 2

1

色彩理論では、色合いとは、ある色にさまざまな量の黒を混ぜることによって得られるものです。したがって、値を正規化することで、2 つの RGB トリプレットが同じ色の異なる色合いに対応しているかどうかを簡単に確認できます。

max1 = max(r1,g1,b1);
max2 = max(r2,g2,b2);
if ( approxEQ(r1/max1,r2/max2,DELTA) && 
     approxEQ(g1/max1,g2/max2,DELTA) && 
     approxEQ(b1/max1,b2/max2,DELTA) ) {

  /* Same colour, different shades */

}

(ここで、明らかに、max(a,b,c)3 つのパラメーターのうち最大のものを返し、それ以外の場合は false を返します。approxEQ(a,b,d))true|a-b|≤d

色合いも確認したい場合は、RGB 値を HSV または HSL に変換することをお勧めします。

于 2013-11-11T22:24:42.160 に答える