判斷兩個RGB顏色是否接近

2021-09-10 06:11:54 字數 984 閱讀 3846

方法一:

轉換到hsv色彩空間,根據hue通道提取

private static double r = 100;

private static double angle = 30;

private static double h = r * math.cos(angle / 180 * math.pi);

private static double r = r * math.sin(angle / 180 * math.pi);

/// 返回兩個顏色在hsv顏色空間的距離

public static double distanceof(hsv hsv1, hsv hsv2)

/// rgb轉換hsv

public static void rgb2hsv(int red, int green, int blue, out double hue, out double sat, out double bri)

else if (max == r && g < b)

else if (max == g)

else if (max == b)

sat = (max == 0) ? 0.0 : (1.0 - ((double)min / (double)max));

bri = max;

}

方法二:

計算兩個三維向量的距離,距離越近,顏色越接近

(r1-r2)^2   +   (g1-g2)^2   +   (b1-b2)^2   的值的平方根,即顏色空間的距離
方法三:

計算兩個三維向量的夾角,夾角越小,顏色越接近

l1=sqrt(r1*r1+g1*g1+b1*b1);   

l2=sqrt(r2*r2+g2*g2+b2*b2);

cos(a)=(r1*r2+g1*g2+b1*b2)/(l1*l2);

判斷兩個線段是否相交

html xmlns lang en charset utf 8 判斷兩個線段是否相交問題title rel stylesheet href css reset.css rel stylesheet href css style.css head class wrap 判斷兩個線段是否相交h2 br...

判斷兩個矩形是否重疊

兩個矩形的邊均與x軸或y軸平行,即軸對齊的矩形 將第乙個矩形記做a,第二個矩形記做b 判斷矩陣a與矩陣b是否重疊 邊沿重疊也認為是重疊 第一種方案,正向思維 按照一般的思路,先列舉出所有的矩形重疊的情況,然後,判斷是否是其中一種,如圖所示,共有四種重疊情況,我們使用紫色代表矩形a,紅色代表矩形b,並...

判斷兩個矩陣是否重疊

題目描述 給定兩個矩陣 前提 兩個矩陣的邊均與x軸和y軸平行,即軸對齊的矩形 將第乙個矩形記作a,第二個矩形記作b,判斷矩形a與矩形b是否重疊 邊沿重疊也認為是重疊 如果重疊則返回重疊面積。演算法分析 反向思考,我們不妨先解決出 不重疊 的情況,即b矩陣,可能在a的左側 右側 上側 下側。提交 in...